)]}'
{
  "log": [
    {
      "commit": "00a2096f3bd6f938216b3691c0b581d64df52999",
      "tree": "0a1aa328602f48be60087756734852ea8edb0d42",
      "parents": [
        "f3d9908a888203e7e70b8c2d43ee741a95e154ed"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 25 19:11:01 2016 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 25 19:16:26 2016 -0700"
      },
      "message": "Audio policy: volume computation improvement on A2DP for notifications\n\nWhen playing STRATEGY_SONIFICATION* streams, or system sounds or\n  enforced sounds on A2DP during media playback, ensure the\n  difference between the media volume and the notification\n  is no more than 12dB\n\nBug 28288132\n\nChange-Id: If5cb7979dd76a0d624e8aeff9126ff56bfd7366b\n"
    },
    {
      "commit": "634b71478742310960f3fdb4241e70a0735712c4",
      "tree": "7a44f5a447a8b37db668b6b88b8d3a29d0e85c95",
      "parents": [
        "eb7f3940044effc6a8b313a73134b5cc2156068c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 20 13:48:02 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 20 16:45:57 2016 -0700"
      },
      "message": "audio policy: fix regression in getDeviceConnectionState().\n\nFix problem in DeviceVector() device search logic causing\nfailure to report connection of devices when no address is provided\n(e.g when called from AudioManager.isBluetoothA2dpOn()).\n\nBug: 28286051\nChange-Id: I7ca732e195d2ddcdc1a93b78aed21523b3461aa9\n"
    },
    {
      "commit": "8111860ba116d84034b2aa21445feec71c65a9d4",
      "tree": "43f4a7b699fb04a33bfe4797ecfc4894b0aae945",
      "parents": [
        "88bd61e31184a72e34e5a8c2ae11d034e01845aa",
        "5a2b62984c7cecd1761fe272c078dd814c167942"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 19 17:04:59 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 19 17:05:01 2016 +0000"
      },
      "message": "Merge \"audio policy: support platforms with no audio devices\" into nyc-dev"
    },
    {
      "commit": "5a2b62984c7cecd1761fe272c078dd814c167942",
      "tree": "e93fb96c43df88df2f05f23cb1160ecd91aead7b",
      "parents": [
        "bc0c73e05ec935bc478ee0e40aee79f80771a482"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 14 18:05:57 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 18 18:35:02 2016 -0700"
      },
      "message": "audio policy: support platforms with no audio devices\n\nRemove requirement to declare an AUDIO_DEVICE_OUT_SPEAKER device\nfor platforms without audio output.\n\nBy convention:\n- platforms without audio output should declare a single output\ndevice of type AUDIO_DEVICE_OUT_STUB also declared as default\noutput device\n- platforms without audio input should declare a single input\ndevice of type AUDIO_DEVICE_IN_STUB\n\nPlatforms with no audio at all can use stub audio policy configuration\nfile and audio HAL with the following instructions in device.mk file:\n\nUSE_XML_AUDIO_POLICY_CONF :\u003d 1\nPRODUCT_PACKAGES +\u003d \\\n    audio.stub.default\nPRODUCT_COPY_FILES +\u003d \\\n    frameworks/av/services/audiopolicy/config/audio_policy_configuration_stub.xml:system/etc/audio_policy_configuration.xml\n\nBug: 25075342\nChange-Id: Id700978559427edd3c7cc38d98f2fd52928367ed\n"
    },
    {
      "commit": "3f5eba440fa87637211f1d3b3f0061fc37065636",
      "tree": "3942c954b5612e88c27a703559f4a42c28dda12e",
      "parents": [
        "4178befd29da90abe0e2fd6f58b5caa1c225badd",
        "6af1c1dc8954a555c6c6ef07d4f93e243d7f08cf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 19 00:09:31 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 19 00:09:31 2016 +0000"
      },
      "message": "Merge \"audio policy: modify ringone volume attenuation over headset.\" into nyc-dev"
    },
    {
      "commit": "d3926fe68ffd8d156e7c019277bbeb32ca786d8e",
      "tree": "13d5e225da19d0096c845868c97049a843807780",
      "parents": [
        "bc0c73e05ec935bc478ee0e40aee79f80771a482"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 15 18:10:07 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 15 18:15:38 2016 -0700"
      },
      "message": "audio policy: fix call volume regression\n\nCommit 1fd372e4 caused a regression preventing to\nchange in call volume.\n\nBug: 28223472\nChange-Id: I31bd220ebdde1175c2f0a5ef1e874e86c6615ff8\n"
    },
    {
      "commit": "6af1c1dc8954a555c6c6ef07d4f93e243d7f08cf",
      "tree": "e2644f947c09eb3981f4a2c7ca4262f0df09ce77",
      "parents": [
        "8c808a220fc155cc7bbe94e43125f2a25a4441a5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 14 11:20:44 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 14 11:57:42 2016 -0700"
      },
      "message": "audio policy: modify ringone volume attenuation over headset.\n\nDo not limit ringtone volume over headseet when combined with speaker and\nno music is playing.\n\nbug: 26769982\n\nChange-Id: I5309bf0d672cca67c69a15b73ee2ef34a220d42a\n"
    },
    {
      "commit": "8c808a220fc155cc7bbe94e43125f2a25a4441a5",
      "tree": "a9aa5a72b216b3d21e4e6464f9d904e6850e172c",
      "parents": [
        "3a9696965b1e356d10807f8e653e85e8f235ff89",
        "c40d96943ddebd31578f30517457f88e6e894eb1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 14 17:26:16 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 14 17:26:17 2016 +0000"
      },
      "message": "Merge \"audio policy: fix dynamic audio policy device address forwarding\" into nyc-dev"
    },
    {
      "commit": "c40d96943ddebd31578f30517457f88e6e894eb1",
      "tree": "ef4f71da1ec55231323c705e5611179ceb70d9d0",
      "parents": [
        "aff4e460d4cf278909316412c17c042d7366178f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 13 19:14:13 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 13 19:14:13 2016 -0700"
      },
      "message": "audio policy: fix dynamic audio policy device address forwarding\n\nMake sure the device address is passed to audio HAL when opening\nthe output stream or changing device selection.\n\nThis is needed for dynamic audio policies with MIX_ROUTE_FLAG_RENDER.\n\nBug: 25448664\nChange-Id: Iff7f733f6cad54753b0b5b0166303e97ea24e284\n"
    },
    {
      "commit": "8ae73129e7e79d826b293238c2f037f723d0e6e8",
      "tree": "a6a5acadaea37f33ccfc316ffd68483951106e29",
      "parents": [
        "aff4e460d4cf278909316412c17c042d7366178f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 12 10:13:29 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 12 17:47:57 2016 -0700"
      },
      "message": "audio policy: fix call audio over 24 bit USB device\n\nTake into account voice RX source device properties when\nconfiguring the audio patch bridging the voice RX device\nto the USB output device.\n\nBug: 25643110\n\nChange-Id: I06f282d3cc12493f21500bf9ab35a3ceb93f14af\n"
    },
    {
      "commit": "1fd372e40ef40643fa9d036a0c9db043475b1b02",
      "tree": "d19358826e2cbc835b3a9a05ef8429e6b590fa14",
      "parents": [
        "7f688edcace6c7abc9ef566669c4511849ad2493"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 06 14:23:53 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 07 13:55:19 2016 -0700"
      },
      "message": "audio policy: fix volume burst on user switch.\n\nFix two main problems in setStreamVolumeIndex():\n\n1) the conventional initialization or user switch behavior consisting in first\napplying volume for AUDIO_DEVICE_OUT_DEFAULT device which resets all volumes\nand then apply device specific volumes is problematic: if this is done while\na stream is active, it will temporarily reset the volume to its default\n(usually loud) and then back causing an audible glitch.\n\n2) The logic consisting in applying the requested volume to all outputs with a\ndevice selected by the routing strategy corresponding to the requested stream\nis problematic: it will cause device specific volumes for other devices than\ncurrent one to be applied to active streams.\nRestrict the logic to cases of multiple device selections including the\nrequested device.\n\nBug: 27557733\n\nChange-Id: Ia14cd51766a7516c42221abff76843d47699105f\n"
    },
    {
      "commit": "7c6a1621ef253989ab44cf68904531b35ae8b0b1",
      "tree": "46323a707f54e6a1aa0d642232de24c935b65254",
      "parents": [
        "c526e1ef36f8f0520a059c6cf304e12e86170c26",
        "0709b0aba2adb719d347341ff58441347a1c1582"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 01 21:35:03 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 01 21:35:04 2016 +0000"
      },
      "message": "Merge \"AudioPolicyManager: remove 5.1 channels for Surround Settings NEVER\" into nyc-dev"
    },
    {
      "commit": "0709b0aba2adb719d347341ff58441347a1c1582",
      "tree": "eb1131cbae68c2d90971ee68ae2a89bb7d43b709",
      "parents": [
        "00eeb32846df81288f12fe4c83e61d7db2842226"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 31 12:54:57 2016 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 01 10:05:44 2016 -0700"
      },
      "message": "AudioPolicyManager: remove 5.1 channels for Surround Settings NEVER\n\nThis allows people with TOSLINK to hear the correct stereo PCM\nwhen listening to movies.\n\nBug: 25144047\nChange-Id: I88401c016dd5a3a469becb019540c04befe78bba\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "e85b9da2b3b8461724067cb927d20666ab09e3fd",
      "tree": "2a42d09d907053851054e4a588541ba8b9c6ffd2",
      "parents": [
        "88c3cda7016b6062901d4fb49479c030f0751701",
        "18fba84019d778b3c20875d93f9f36c2410ecf33"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 31 22:07:44 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 31 22:07:44 2016 +0000"
      },
      "message": "Merge \"audio policy: fix in call volume over USB\" into nyc-dev"
    },
    {
      "commit": "18fba84019d778b3c20875d93f9f36c2410ecf33",
      "tree": "2b0d9ee188b05481b10b1de31644c26c85c38dc3",
      "parents": [
        "029aaa6887a86185c451b615fadcfd97b008e9b5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 31 14:41:26 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 31 14:41:26 2016 -0700"
      },
      "message": "audio policy: fix in call volume over USB\n\nDo not consider only primary output for voice volume control as\nsometimes the output device selected for a call can be connected to\nanother output stream (e.g USB)\n\nBug: 27108587\nChange-Id: I8ec3db272f87d49f57044a771019672050f63d32\n"
    },
    {
      "commit": "00eeb32846df81288f12fe4c83e61d7db2842226",
      "tree": "174cad54c109cb55cd6af2b6cf92e712f7373869",
      "parents": [
        "b06b9dfc27ec6e58a7aebb82e0d30d32eb95c080"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 31 12:41:00 2016 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 31 12:41:00 2016 -0700"
      },
      "message": "AudioPolicyManager: only modify surround formats for HDMI devices\n\nUSB devices were getting modified by mistake.\n\nBug: 27938796\nChange-Id: Ib62f6df804f8e578a702aba93439ff7cbfe3347a\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "a13cde98a880341f0a56d91da6364b093fb5d24e",
      "tree": "3974215c7cc52f2136c04e3e38568e0483c03129",
      "parents": [
        "45993ad8833063a50af83f76ec1ddeba673b5277"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 28 15:26:02 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 29 13:43:18 2016 -0700"
      },
      "message": "Use audio_module_handle_t and audio_patch_handle_t consistently\n\nBug: 27814144\nChange-Id: I54b7a73ec318779fd3addb060998f4d94141152d\n"
    },
    {
      "commit": "fd7dc4c764e6ec1136439188f75839094ff01917",
      "tree": "fd3e16f536f35569cb71179108b680eac3fce92d",
      "parents": [
        "643cf674a8a2f038cd4001d0397d70edc2405437",
        "07ac114c3965e16fe523f88c913e701602604589"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Mar 28 21:28:31 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 28 21:28:31 2016 +0000"
      },
      "message": "Merge \"AudioPolicyManager: always force AC3 on for TVs\" into nyc-dev"
    },
    {
      "commit": "07ac114c3965e16fe523f88c913e701602604589",
      "tree": "dc734d6eae90844062ade57b4b6834dda198d02a",
      "parents": [
        "d384306b8a5c2f106a02574c356d78a08e7894ac"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 25 13:39:29 2016 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Mar 26 18:30:55 2016 -0700"
      },
      "message": "AudioPolicyManager: always force AC3 on for TVs\n\nMost TVs support AC3 but they do not report it in their EDID.\nThis changes forces support for AC3 unless turned off by Settings.\nThis change allows broadcast TV to work by default.\n\nBug: 24541671\nChange-Id: I9e8cf194198db3811f91149014ef29e46972ad2c\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "fdb90f355b269737fe48a2da0593b37d5c2b83c1",
      "tree": "8bb77d55bad3dac443b203a2d24b02e6d2183907",
      "parents": [
        "478b2521f5defb356b0dd44313288852b2c5e0ee",
        "5ac8cd425e1a0c4287c0bb84f922fef4fa106411"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 25 03:21:28 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 25 03:21:29 2016 +0000"
      },
      "message": "Merge \"RENDER dynamic policies: fix address check\" into nyc-dev"
    },
    {
      "commit": "5ac8cd425e1a0c4287c0bb84f922fef4fa106411",
      "tree": "55138cd920d8b6b4af546fc1e9893cc851d509b2",
      "parents": [
        "a8d309df2f603767c0f0ad9248aef47a5b6ed5b8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Mar 24 16:35:36 2016 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Mar 24 16:55:59 2016 -0700"
      },
      "message": "RENDER dynamic policies: fix address check\n\nFix mix / output address comparison when registering dynamic\n  policy mixes with a MIX_ROUTE_FLAG_RENDER flag.\nFix mix registration code path where the matching output is\n  not found, but no error is reported.\nImprove logs.\n\nBug 25448664\n\nChange-Id: I3679aead00304b38f7cc42dd9083644450771a15\n"
    },
    {
      "commit": "6b1255bdd3d8d941f4952a98eadf3b454f36a2a9",
      "tree": "25716fd79433d052cfe5638431607d2201a1484a",
      "parents": [
        "560a198f1f95a085e24944b20df536e75e21cedb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 11 13:22:36 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 17:43:40 2016 -0700"
      },
      "message": "Fix typos in use of %#\n\nChange-Id: I5e49f89dc0e49bc3f5f2d3922d390982a3773384\n"
    },
    {
      "commit": "a8d309df2f603767c0f0ad9248aef47a5b6ed5b8",
      "tree": "2b851cc9d742b7b448ab929c9e008d0167a66dab",
      "parents": [
        "9a57e34f476d5d2400e6e8ffac303c6190e641f0",
        "14cbfcae68582eca97f1a8168c584254515879ee"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 17 16:51:23 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 17 16:51:24 2016 +0000"
      },
      "message": "Merge \"audio policy: fix HW A/V sync rerouting\" into nyc-dev"
    },
    {
      "commit": "14cbfcae68582eca97f1a8168c584254515879ee",
      "tree": "5dd9a3b51f53ff3e8c3a066f14a79a305ce5ec82",
      "parents": [
        "b53ab34b95b8633070cbef5d03162d182aac3a9a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 17 09:42:16 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 17 09:43:53 2016 -0700"
      },
      "message": "audio policy: fix HW A/V sync rerouting\n\nDo not allow HW A/V sync tracks to be attached\nto a PCM mixer as those tracks carry time stamps in band.\n\nCherry pick of c576f6a0 from lmp-mr1-tv-dev.\n\nBug: 25293500.\n\nChange-Id: I1f080232e439a410ded25ca8e461113a96687a3b\n"
    },
    {
      "commit": "7638ca29e8400a19524adb982e9d22c02786de82",
      "tree": "5d1ef493f79529cd5d5a1cce932c6dec3e5d8e69",
      "parents": [
        "9515aca0c07a32128a65a68749bda3ea6851c109"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 04 17:42:44 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Mar 16 14:28:09 2016 -0700"
      },
      "message": "Dynamic policies: support for device selection\n\nDynamic policy mix: rename \"registration\" field to device address\n  as this reflects the true use of the field.\nAudioPolicyManager: dynamic policy registration differs depending\n  on policy routing flags.\nWhen register a mix with the RENDER flag, iterate over all outputs\u0027\n  patches to find a matching device and address.\n\nBug 25448664\n\nChange-Id: I71584081e7f1b2b5252fb6c4659fdeb464f7d282\n"
    },
    {
      "commit": "794fde269478b50be873d9d93574b8aa2b6afc42",
      "tree": "91bee67f3d26b855c8738d52b9594ce206dc669b",
      "parents": [
        "356d3f528514f0f06e6ae1bccf0bed7be9fd1fcb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 11 09:50:45 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 11 09:50:45 2016 -0800"
      },
      "message": "audio policy: fix volume control regression\n\ncommit 28d09f064 introduced regressions in volume control resulting\nin changing some device/stream volumes unexpectedly.\n\nThe problem was in the logic consisting in considering streams equivalent for\nvolume control based on their associated strategy: The rule is wrong because it\ncauses a volume change on a given stream to cause the same change on all streams\nsharing the same strategy. For instance stream SYSTEM and MUSIC share the same\nstrategy and changing SYSTEM stream volume would change MUSIC volume.\n\nThe new rule just considers the stream type when deciding if two stream share the\nsame volume control.\n\nAlso fixed possible calls to getStrategy() with stream PATCH causing asserts.\n\nBug: 27586382\n\nAuthor: Eric Laurent \u003celaurent@google.com\u003e\nDate:   Tue Mar 8 10:43:05 2016 -0800\n\n    audio policy: improve accessibility volume\n\nChange-Id: I3fe2a25767319800b0db5fd1ed7c1bd751b04732\n"
    },
    {
      "commit": "28d09f06422841b4274d7fed6ad3441dc97382b2",
      "tree": "87d1d7baa2a1d6079efc1ec6f929e9d987423998",
      "parents": [
        "9322ba85a06ae149575ab102dc9bcffb4388cc7e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 08 10:43:05 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 08 14:41:50 2016 -0800"
      },
      "message": "audio policy: improve accessibility volume\n\nFix some regressions caused by the introduction of accessibility\nstream type and strategy in M.\n\n- change the way ACCESSIBILITY usage maps to a given strategy: always map\nto strategy ACCESSIBILITY but implement a specific device selection for\nstrategy ACCESSIBILITY in getDeviceForStrategy(). This makes sure that\naccessibility prompts always use ACCESSIBILITY stream type.\n\n- optimize getDeviceForStrategy() to avoid reloading the list of outputs\nand devices from the observer when called recursively.\n\n-  make sure that all volume APIs also take into account ACCESSIBILITY stream\nwhen called for MUSIC stream. Generalize the concept of matching strategies\nfor straqegies that should be considered equivalent for volume control.\nModifications in:\n- initStreamVolume()\n- setStreamVolumeIndex()\n- isStreamActive()\n- getDevicesForStream()\n\nBug: 25067903\nBug: 25616373\nChange-Id: Id8c7dd3231f79572b278407bc73186fc42dcc028\n"
    },
    {
      "commit": "0494ebbeda158681dbe0c7cf68abfd475a19d139",
      "tree": "0569cacdbc448fbd1465d2730194ad4d0afb4137",
      "parents": [
        "dadb4ea87f5aa5230c8168b340f595b72fab878c",
        "878e32d7cefc19d86cd0602eda6101961edad6fa"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 03 19:42:55 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 03 19:42:59 2016 +0000"
      },
      "message": "Merge \"AudioPolicyManager: remove unnecessary device reconnection\" into nyc-dev"
    },
    {
      "commit": "62b5c0c28becab95727739889ee762f727c2a462",
      "tree": "a0e840cbcd8ba4016f0990da4ed5002645435064",
      "parents": [
        "1e3acb84fcab8f00dba0a78ad4badaef4ba3869e",
        "517161856d74f5fe39cce131f29b977bc1745991"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 03 02:02:50 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 03 02:02:50 2016 +0000"
      },
      "message": "Merge \"audio flinger: fix offload track underrun\" into nyc-dev"
    },
    {
      "commit": "1e3acb84fcab8f00dba0a78ad4badaef4ba3869e",
      "tree": "e80d5573899d256b3c2cd4d1ff1f1d9583a8fd98",
      "parents": [
        "973074eb8471496c882dc7372d729b23e03bba7c",
        "05ddca504ce8e0e61b41e5c1aebea72086eea57b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 03 02:00:28 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 03 02:00:29 2016 +0000"
      },
      "message": "Merge \"AudioPolicy: capture sample rate 0 is route-specific default\" into nyc-dev"
    },
    {
      "commit": "517161856d74f5fe39cce131f29b977bc1745991",
      "tree": "c12acaeb7597dd99c1a5f0c96d5af7f8a4b7b52a",
      "parents": [
        "db52e5e3dc15f7233ccd9c128fe43f2b2f58b29b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 29 18:00:56 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 02 17:40:18 2016 -0800"
      },
      "message": "audio flinger: fix offload track underrun\n\nFix offload track underrun detection causing early disabling\nof offloaded audio tracks.\n\nOptimize sleep time in case of underrun to avoid spinning while\nwaiting for new data.\n\nRe-enable offload when streaming\n\nBug: 26668110\n\nChange-Id: I874728c69647ac05e1effb84c48700a6d0ac7435\n"
    },
    {
      "commit": "878e32d7cefc19d86cd0602eda6101961edad6fa",
      "tree": "589d200f299d31767cc6611a1e55d320d38171bb",
      "parents": [
        "702b105b290d9a3c8b23f3c809a79086d784c9be"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Mar 02 17:09:54 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Mar 02 17:09:54 2016 -0800"
      },
      "message": "AudioPolicyManager: remove unnecessary device reconnection\n\nThis is now handled by a device reconnection in the AudioService.\n\nBug: 27434478\nChange-Id: I2182b205c2b72cebff657a7bbee95df97f97eb55\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "702b105b290d9a3c8b23f3c809a79086d784c9be",
      "tree": "ae798e99cc3cf42aa9a6a4d918706d4c6c28da80",
      "parents": [
        "24b02edc16fd4d41367bc0acc42760bbe7d70f21"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Mar 02 16:38:26 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Mar 02 16:38:26 2016 -0800"
      },
      "message": "AudioPolicyManager: fix device enumeration\n\nThe AudioDeviceInfo only had PCM_FLOAT because the device enumeration was\nstopping because of an error. The error was detected by new code\nin the AudioFlinger.\n\nThe root error was not clearing a variable after a close.\n\nBug: 27457547\nChange-Id: I529a26c8c0a688863bcf316ad365feddc303fe43\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "05ddca504ce8e0e61b41e5c1aebea72086eea57b",
      "tree": "71137b6ef4df1f294d93d2cedc421b0f85190374",
      "parents": [
        "db52e5e3dc15f7233ccd9c128fe43f2b2f58b29b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 11 08:17:12 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 02 15:17:35 2016 -0800"
      },
      "message": "AudioPolicy: capture sample rate 0 is route-specific default\n\nBug: 25641253\nBug: 21019153\nChange-Id: I7d193640572c08ab5e5f1ecfc8ad6d31635967dd\n"
    },
    {
      "commit": "e8158ffea27c9526547a7340dc5a085b8582033e",
      "tree": "7181d69a3a95ea266981d09a734cf465ab351bbf",
      "parents": [
        "ddfef426b54153f04150596619cf9f1ad88afe9c",
        "eeecb980ff4c202d0a3c4b0bfe040dce2f73336d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 19:10:48 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 01 19:10:50 2016 +0000"
      },
      "message": "Merge \"Add use for audio_unique_id_t\" into nyc-dev"
    },
    {
      "commit": "eeecb980ff4c202d0a3c4b0bfe040dce2f73336d",
      "tree": "decce0d925acd9efd68f2d540bbabb60c0661c6b",
      "parents": [
        "91afc2297dd1c39302dba6ff68e9839aae27d39a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 10:44:04 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:32:58 2016 -0800"
      },
      "message": "Add use for audio_unique_id_t\n\nBug: 25641253\nBug: 21019153\nChange-Id: I65dc128e760c245f3d90559635a8981b186c87d7\n"
    },
    {
      "commit": "09bc4612bdd5874d744c5da1183d96fbd2ad0235",
      "tree": "fc94045495e98c0f750c4bc262aea88c0f406e3b",
      "parents": [
        "1ba1eeca713c118ce12c97ac8bbdadbdd0cc5ff1"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 24 15:58:15 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Feb 29 12:24:21 2016 -0800"
      },
      "message": "AudioPolicyManager: force encoded surround setting\n\nBug: 26373761\nChange-Id: I0f7a486bf1aa7a27f15cf220e2c75ef23f8f8536\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "ff155c642fe7d342a3110444c6103f788230af53",
      "tree": "5ab784ffde5df4eef154c60b1f8a63f9d5a9ae06",
      "parents": [
        "8c7cf3b7d0d7bccb9affbc34ae2ab2d6b332f972"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Feb 26 12:07:16 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Feb 26 12:07:16 2016 -0800"
      },
      "message": "AudioPolicy: AudioOutputDescriptor set/get for patch handle\n\nFor symmetry with AudioInputDescriptor: no direct access to the\n  field for the patch handle.\n\nChange-Id: I5bffecf7a157ec042d749064208bc6c279008542\n"
    },
    {
      "commit": "8c7cf3b7d0d7bccb9affbc34ae2ab2d6b332f972",
      "tree": "2ce1446fe6fe647e3e0dcbcaf82ac45c5551f492",
      "parents": [
        "809aeb1f725beed877887fe1c5ca3430d811b328"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 25 17:08:24 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 25 17:08:24 2016 -0800"
      },
      "message": "Send audio patch in recording callback\n\nRemove direct access to patch handle in AudioInputDescriptor, replace with\n  set / get functions.\nAdd interface for AudioSession to query configuration from enclosing\n  input descriptor.\nWhen input descriptor\u0027s patch handle changes during a recording, propagate\n  the change through the recording notification callback.\n\nBug 26798796\n\nChange-Id: Ia1395d44da7ccfe69ca46877638d1eb49b3935ad\n"
    },
    {
      "commit": "232f26f8b673973ffa463f80b08b731ffacc8785",
      "tree": "0722b9bc20a7b049ba6b4120138ef8845293e37f",
      "parents": [
        "b74dc56b2fd3ec872383544d4b6d4950c206259b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 17 18:06:27 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 18 22:03:21 2016 +0000"
      },
      "message": "DO NOT MERGE - audio policy: disable concurrent capture\n\nThis reverts commit 4342335fb84bfa4ec5b99e3ef82f186820c2275f.\nThis reverts commit 56afc7a5cc0f0bfc8021f6413b2e2267050bdc8a.\nThis reverts commit 313d1e7dfb4bf8e0a2f09a9adb287062dd64410c.\nThis reverts commit fb66dd9f95a1168698f072c4e5c2a2cf8c49a80f.\n\nBug: 22702906\n\nChange-Id: I9085918f1f7b12e28430958cceb768bb29c12bdb\n"
    },
    {
      "commit": "b74dc56b2fd3ec872383544d4b6d4950c206259b",
      "tree": "2eb75fd747728028728765b09b8ef406a3f0fb5a",
      "parents": [
        "de223b40b81450703980667ffffc766a16c3447c",
        "4ca44d77ede74eda712fbae80700dc92d5922e02"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Feb 18 00:58:02 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 18 00:58:02 2016 +0000"
      },
      "message": "Merge \"AudioPolicyManager: add comment for disabling offload when streaming.\" into nyc-dev"
    },
    {
      "commit": "4ca44d77ede74eda712fbae80700dc92d5922e02",
      "tree": "20ee74e31b67db0225d6de4420661e16f9472092",
      "parents": [
        "f25f8410c01922c58d78ec35da420c3b4fed7e38"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Feb 17 16:56:38 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Feb 17 16:56:38 2016 -0800"
      },
      "message": "AudioPolicyManager: add comment for disabling offload when streaming.\n\nBug: 23499384\nChange-Id: I74214c9cb444b10a6f50ffe499938945c063afca\n"
    },
    {
      "commit": "de223b40b81450703980667ffffc766a16c3447c",
      "tree": "65f5bea3ce3eaea8742a88f96c0151bdaa24ac98",
      "parents": [
        "f25f8410c01922c58d78ec35da420c3b4fed7e38",
        "e693002b0fb25099540588245892ed98103749ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 18 00:46:42 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 18 00:46:42 2016 +0000"
      },
      "message": "Merge \"audio policy: select output with best sample format match\" into nyc-dev"
    },
    {
      "commit": "e693002b0fb25099540588245892ed98103749ba",
      "tree": "5c6b80929a798987d5ae658d3041cdefd4ba162d",
      "parents": [
        "d25c45526d9598218433b0fa59e1f5accbd5b639"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 10:20:40 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 17 15:34:40 2016 -0800"
      },
      "message": "audio policy: select output with best sample format match\n\nAdd rules allowing selection of the output stream with the sample\nformat offering the best match to the client track sample format\nwhen more than one output is compatible with a request.\n\nBug: 27210844\n\nChange-Id: I31981940be5d1c06d713d52187cfb0a7bf355773\n"
    },
    {
      "commit": "7b8d434379e486ff32d43875676f423ce9ee1c05",
      "tree": "b5accd56e1190c2ab7b84d42d392746f53044211",
      "parents": [
        "b0a144d705a021994628d136a170a6d2bd4282e7"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Feb 16 17:56:37 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Feb 17 19:44:18 2016 +0000"
      },
      "message": "AudioPolicyManager: disable offload mode when streaming.\n\nThis is a temporary work around until the root cause is fixed in offload\nplayback path.\n\nBug: 23499384\nChange-Id: I1ee8197ba8995084287ef9385a0f6a30e4bb9351\n"
    },
    {
      "commit": "b0a144d705a021994628d136a170a6d2bd4282e7",
      "tree": "f6144a26c0e19fa9a7ba75e136c80afeb9ecf14a",
      "parents": [
        "7f308c3e0556a5e704bcb3b341842ed50ba80b0a",
        "fdb3c07db5d44535eb8c3ec46dc78ad8446c01eb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 12 22:24:53 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 12 22:24:55 2016 +0000"
      },
      "message": "Merge \"AudioTrack: support ENCODING_IEC61937\" into nyc-dev"
    },
    {
      "commit": "fdb3c07db5d44535eb8c3ec46dc78ad8446c01eb",
      "tree": "b8c3d97da524e8aefcb37e736619da6b8e087a82",
      "parents": [
        "3ea4f828a6906e9931f96ebdcae9c63e14b86cbd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Feb 09 10:47:02 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 12 06:30:43 2016 +0000"
      },
      "message": "AudioTrack: support ENCODING_IEC61937\n\nSet DIRECT flag.\nUse audio_has_proportional_frames() instead of audio_is_linear_pcm()\nwhere appropriate.\n\nBug: 24541671\nBug: 20891646\nBug: 26373761\nChange-Id: Ia32036b18683b084d6c9887593df87397ea0afd9\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "e8decedb429ed76dfa84cdb3e80ab3b969e77298",
      "tree": "3cdcd5f6ad76945ef052e0a68978a8c2930e4c3a",
      "parents": [
        "3aaa699a46edb4f47d0cd5a11d57eba93493bd90"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 11 12:50:39 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 11 12:50:39 2016 -0800"
      },
      "message": "Dynamic audio policies on UID\n\nWhen looking for an output, take attributes and UID into account.\nTo find the matching mix: for each mix\n- inspect which rules are used\n- find a candidate mix for usage\n- check UID compatibility\nRename AttributeMatchCriterion to AudioMixMatchCriterion to be consistent\n with the fact that now mixing rules are not always about audio attributes.\n\nBug 26798796\n\nChange-Id: I1520b0df190a98f197ea8e0144b770e1e6d97888\n"
    },
    {
      "commit": "52785f3df24fe817af4f1c3c2cddfb30ab5450ee",
      "tree": "28535fcfed7f5d82c1c8575da06ecae08f46353d",
      "parents": [
        "b30f2636bc36d56b94dc5d35e20a68b2e403aac2"
      ],
      "author": {
        "name": "Chris Thornton",
        "email": "thorntonc@google.com",
        "time": "Tue Feb 09 17:28:49 2016 -0800"
      },
      "committer": {
        "name": "Chris Thornton",
        "email": "thorntonc@google.com",
        "time": "Tue Feb 09 17:28:49 2016 -0800"
      },
      "message": "Call SoundTrigger::setCaptureState in AudioPoilcyManager::closeAllInputs\n\ncloseAllInputs wasn\u0027t informing the sound trigger service that all\ninputs were closed. This meant that the service could get stuck in a\nstate where it was disabled because it thought there was some active\ncapture, even though there was nothing listening. (This was particularly\ncommon when a bluetooth device disconnected).\n\nBUG: 26970013,26450651\nChange-Id: I613434ecacce3ef03a657008fd94c314948ba2b8\n"
    },
    {
      "commit": "62e4bc53be19e96f8e37e850b9c8a9e15b9e2ba6",
      "tree": "f3b454f08ebd786f30b9fea45ef4c85bb91b704d",
      "parents": [
        "43e08e0146b825cde52480b64764765d9a61f97c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 02 18:37:28 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 09 01:52:21 2016 +0000"
      },
      "message": "audio policy: strengthen dynamic audio profile intialization\n\nAdd some robustness to getParameters() reply parsing\nin AudioPolicyManager::updateAudioProfiles().\nSome audio HALs may respond with more than just the parameters requested.\n\nChange-Id: Id9327604f521f9fb5636ff93cb6a7c3c23c86778\n"
    },
    {
      "commit": "56afc7a5cc0f0bfc8021f6413b2e2267050bdc8a",
      "tree": "4130dd51cc5d405ece260c66916a84024e6979ee",
      "parents": [
        "2e5408ac3e51cb459160b9cd392f1809b0758316"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 03 11:35:52 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 03 11:46:08 2016 -0800"
      },
      "message": "Fix connection of OUT_REMOTE_SUBMIX device on APM startInput\n\nFix a regression in AudioPolicyManager::startInput() where\n the OUT_REMOTE_SUBMIX audio device was never made available\n due to the test on the input descriptor, which was already\n active by the time it is tested, as the activity on the\n session has already been updated.\n\nAdd methods to AudioInputDescriptor and AudioSessionCollection\n to query the number of active sessions. Use the new method\n to optimize AudioSessionCollection::hasActiveSession()\n\nBug 26798796\n\nChange-Id: I2de4e47970505e64c4c78a148a80a9f0ec19e821\n"
    },
    {
      "commit": "2e5408ac3e51cb459160b9cd392f1809b0758316",
      "tree": "66527477ef5a03dbd4bd13e773010ab0e56b9e2c",
      "parents": [
        "706de969169a8f651726ab7de7302a3d35b39768",
        "e04e62bc05316d9682688f87053be5cf47e9c707"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 01 19:54:26 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 01 19:54:26 2016 +0000"
      },
      "message": "Merge \"audio policy: fix set volume with explicit audio patch\""
    },
    {
      "commit": "706de969169a8f651726ab7de7302a3d35b39768",
      "tree": "b416c007f71098a17f41d008088bb9988f7641a5",
      "parents": [
        "16558ea318c3cf25a945fc1771572f489763527e",
        "bacd9d7ae33d831f9b8b3a0bc7ba8d367164a1d0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 01 19:53:36 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 01 19:53:36 2016 +0000"
      },
      "message": "Merge \"audio policy: fix loss of audio patch client UID\""
    },
    {
      "commit": "e04e62bc05316d9682688f87053be5cf47e9c707",
      "tree": "11271f0fc771239d28f0bedeb8f3589c9e047428",
      "parents": [
        "37dfacdf3e66516bd4b0c7d08e1aad5869bf5825"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 29 18:25:01 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 01 19:31:14 2016 +0000"
      },
      "message": "audio policy: fix set volume with explicit audio patch\n\nsetStreamVolumeIndex() receives both a stream and a device as inputs.\nWhen an explicit audio patch is requested on an output mix, it\nis possible that the active device does not match the strategy\nderived from the stream, in which case the function would not update\ncurrent volume.\nThis patch makes sure that the device explicitly passed to\nsetStreamVolumeIndex() is always taken into acount.\n\nChange-Id: Ie496ff70f059166af6c81c8f8445a9a9c7548a72\n"
    },
    {
      "commit": "bacd9d7ae33d831f9b8b3a0bc7ba8d367164a1d0",
      "tree": "8a3174549761071b27dcb4cad25906019009678e",
      "parents": [
        "37dfacdf3e66516bd4b0c7d08e1aad5869bf5825"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 29 17:49:52 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 29 17:49:52 2016 -0800"
      },
      "message": "audio policy: fix loss of audio patch client UID\n\nIf an explicit audio patch is present on an output mix,\nits client UID should not be reset by default when the device is updated\non this output mix.\n\nBug: 26423115\nChange-Id: I87973e62d6eeb6f8fef3780bd67f58ae52d07812\n"
    },
    {
      "commit": "313d1e7dfb4bf8e0a2f09a9adb287062dd64410c",
      "tree": "70b8d0bf8ee87072115c91f108365c4001eecaa9",
      "parents": [
        "6186b0f418e6efd0bf2463397f4c783cde75ecff"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 29 09:56:57 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 29 20:28:54 2016 +0000"
      },
      "message": "audio policy: fix input device selection\n\nMake sure session activity count is incremented before\nselecting device in startInput().\n\nBug: 26841909\nChange-Id: I0b4867b9ad4c7a98e5eddb4f1f23c4cf075f074e\n"
    },
    {
      "commit": "fb66dd9f95a1168698f072c4e5c2a2cf8c49a80f",
      "tree": "e08f2ecc670ee5828d5ef4bece2e962b02295afc",
      "parents": [
        "37dfacdf3e66516bd4b0c7d08e1aad5869bf5825"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 18:32:03 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 29 18:06:50 2016 +0000"
      },
      "message": "Revert \"Revert \"audio policy for concurrent capture.\"\"\n\nThis reverts commit 84332aaa807037baca05340875f2d94fcc519ac4.\n\nBug:26841909\n"
    },
    {
      "commit": "35cb56342e80dbbba3a9cbf5c1398976f1f1befd",
      "tree": "dd25b6024aad666459718276cf8e068cfb289118",
      "parents": [
        "157bd8a8a69c15cba8276652a15dbb7e5fd5cffb",
        "84332aaa807037baca05340875f2d94fcc519ac4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 22:51:30 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 28 22:51:30 2016 +0000"
      },
      "message": "Merge \"Revert \"audio policy for concurrent capture.\"\""
    },
    {
      "commit": "84332aaa807037baca05340875f2d94fcc519ac4",
      "tree": "638152ca1462b98449c8985f53c4c7986dcdf15d",
      "parents": [
        "4b2fcd8abf90b1bd95539f9f4ef2ac39ce9e2df1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 22:19:18 2016 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 22:20:23 2016 +0000"
      },
      "message": "Revert \"audio policy for concurrent capture.\"\n\nThis reverts commit 4b2fcd8abf90b1bd95539f9f4ef2ac39ce9e2df1.\n\nBug:26841909\n\nChange-Id: Ifc74b195394b9fb3f73d33455ad061bd896d5331\n"
    },
    {
      "commit": "19219b44e05555b29e00ce56ce273d168fa83888",
      "tree": "11790a2d472ade7c736296c7f1ee4c446c0bffbb",
      "parents": [
        "c9d7c4e35afd48ac8a315f53666943b6210dafa1"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Mon Jan 25 11:28:17 2016 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 27 12:49:24 2016 -0800"
      },
      "message": "audio policy: use reference for all default volume table\n\nThis patch migrates all default volume tables as reference\nvolume tables.\nNo implicit volume tables is allowed any more, the reference\nmust be given for all stream type and device category.\nIt allows removing the WA that was introduce to use the stream CNT\nto host the default volume tables.\n\nChange-Id: I19f5e9d2a62d448f0f8447f93acbbd2e1a723958\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "4b2fcd8abf90b1bd95539f9f4ef2ac39ce9e2df1",
      "tree": "8d98964e142912b23352b5c67fd6a3b6568645ab",
      "parents": [
        "a03910b23a31058eea178e8d3f5e84fcf852d5c2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 15 18:00:39 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 27 03:09:22 2016 +0000"
      },
      "message": "audio policy for concurrent capture.\n\nFirst implementation of concurrent capture policy:\nInitially, only capture for HOTWORD or FM TUNER sources or\nre-route submix is allowed at the same time as any other capture.\nSeveral capture clients can share the same input stream. In this case\nactive clients are sorted by audio source priority level and the input\npath configuration and routing is driven by the highest priority\nactive source.\n\nBug: 22702906\n\nChange-Id: Icbedfe001c6243ecad7a7b57ab78d893b2b97402\n"
    },
    {
      "commit": "a03910b23a31058eea178e8d3f5e84fcf852d5c2",
      "tree": "638152ca1462b98449c8985f53c4c7986dcdf15d",
      "parents": [
        "93ec0d71800824481b41b883739c9ab1d0559c27",
        "20eb3a4340a1f1f6e978a23527daff080140db1a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 27 03:07:40 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 27 03:07:40 2016 +0000"
      },
      "message": "Merge \"audio policy: fix merging error for commit 112b0af8.\""
    },
    {
      "commit": "20eb3a4340a1f1f6e978a23527daff080140db1a",
      "tree": "73efd63103d906488cd369c3572545361b90dfa3",
      "parents": [
        "987f953298169027df001409fbd82991d82900bc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 26 18:39:17 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 26 18:43:21 2016 -0800"
      },
      "message": "audio policy: fix merging error for commit 112b0af8.\n\nWrong patch set was merged from partner gerrit.\n\nChange-Id: I850d61b1cc8682e0a82ee64bc8cb022b7512de1c\n"
    },
    {
      "commit": "d1ab2bd4f1ea166a7e9e81cfd7f3e5dd47135d4d",
      "tree": "14c1b9bb94c6b5bf6820be9cce3484995486696e",
      "parents": [
        "987f953298169027df001409fbd82991d82900bc"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Wed Dec 02 18:20:06 2015 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 21 14:40:54 2016 -0800"
      },
      "message": "audio policy: move volume table to XML file\n\nThis patch allows to store in XML file volume tables.\nThe compatibility is maintained for legacy conf file.\nConfigurable Engine is only compatible with new XML conf.\nThis patch removes from configurable engine Structure / Settings the volume\ntable but keep the configurabllity of switching volume profiles from\none another according to criteria like phone state...\n(ex: DTMF stream type is following Voice Profile in call)\n\nChange-Id: I78c91bc3378b6c47202abe7b5c1c1e011ff62eed\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "f4ad6e5637b6deccdac4b60615383f290b3806cf",
      "tree": "c5f1796e20a7e7d34f71cb2c6ef0b0ab3a9cde4d",
      "parents": [
        "74a930b2bb7c61c25232c4f06b67abdbeaca8116"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Thu Nov 19 16:59:57 2015 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 15 09:53:00 2016 -0800"
      },
      "message": "Audio policy: implement configuration file in XML\n\nThis patch introduces configuration file of the policy in XML.\nLegacy configuration file is used by default and\ncompilation flag USE_XML_AUDIO_POLICY_CONF must be defined to\nuse XML file format.\n\nChange-Id: I352b788b5829d42ed82c851a4faef0e526be582e\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "c16bf1d9e8ccdd27327e988d50f5b9640e5406f8",
      "tree": "11def686f4fa83f744f266851b0a7a204a64220a",
      "parents": [
        "31fc66042d4241f443ebbd2c7b37946edf35b8e9",
        "2f4fe9f7df8f22c6bc8745407d19df73128810ec"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 13 00:20:55 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 13 00:20:55 2016 +0000"
      },
      "message": "Merge \"AudioPolicy: callback for recording configuration change\""
    },
    {
      "commit": "2f4fe9f7df8f22c6bc8745407d19df73128810ec",
      "tree": "df7d3fe791c9256c7ca53fb36c8f563eec714a30",
      "parents": [
        "dd715cea770697ab6f424df74d69f37def701b30"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Dec 04 16:20:59 2015 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jan 11 12:06:12 2016 -0800"
      },
      "message": "AudioPolicy: callback for recording configuration change\n\nEach AudioSession tracks start / end of recording, and sends\n  a callback to AudioSystem.\nAudioSystem tracks a single recording callback tracking\n  input source and audio session number.\n\nChange-Id: Ic065751d9ba013e03f2a6ad8dde02542e5465ec0\n"
    },
    {
      "commit": "2ddee19245641e86bca436dda23a0f5089bf2ab5",
      "tree": "ee665bb2097db2710211eb1d834510201b02ab59",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 18 17:34:44 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 08 14:09:31 2016 -0800"
      },
      "message": "Add setMasterMono and getMasterMono\n\nBug: 15283594\nBug: 22700363\nChange-Id: I32dc1fcecf285967a61bd508af3bb299595db57d\n"
    },
    {
      "commit": "112b0af826aeca45855690b9c105b2cdf9938bbe",
      "tree": "3069f5aa08c8a76ecaad33910a5901a8537ef0ac",
      "parents": [
        "599c758b258cc5da0dba9b530425381facc37d77"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Thu Nov 19 16:13:25 2015 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 16 11:19:19 2015 -0800"
      },
      "message": "audio policy: introduction of AudioProfile\n\nIn order to be able to declare the possible sample\nspecifications for an Audio Port (a given format, a list of\nsample rates, a list of channels), a new object AudioProfile is\nintroduced.\n\nChange-Id: Ie3ca3400f05984e7b4132fc7ba90020eb4d998c7\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "599c758b258cc5da0dba9b530425381facc37d77",
      "tree": "212a8b01eb2edcee68ffc5fc33c3ce9a9b762b32",
      "parents": [
        "44333e51c62643e7581022495a2a1f410dd62e27"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 07 18:05:55 2015 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 15 18:55:16 2015 -0800"
      },
      "message": "audio policy: audio sessions on input descriptors\n\nIn preparation for concurrent capture, add support for multiple\naudio sessions per input stream.\n\nEach session keeps its own properties, open and active reference\ncounting.\n\nNo functional change for now: still one session per input and one active\ninput at a time.\n\nBug: 18815985.\nBug: 22702906.\n\nChange-Id: I915a65989a7fd0d3cbe2fcf5a0aee2ea0df5f4f5\n"
    },
    {
      "commit": "7b279bbc24139ee1e01b58055ca94926ec18e2e9",
      "tree": "5986c5445c80e4341b02bfcd861f24619e98eb56",
      "parents": [
        "83923a3060c471b13d5a103852b3a3979ee5b35e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 14 10:18:23 2015 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 14 10:18:23 2015 -0800"
      },
      "message": "audio policy: remove compilation warnings\n\nChange-Id: I4d41ca903dfbe37066ef20a13ebabaff1e5b7326\n"
    },
    {
      "commit": "65bfe916ca972b95f41d7f6cc2566c2e12a3eada",
      "tree": "5bba6ff35798ae91602658b6754d2ba047844d71",
      "parents": [
        "0a62162accbce87db829869a15eab72eca2607b2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Dec 04 15:56:47 2015 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Dec 04 16:27:43 2015 -0800"
      },
      "message": "AudioPolicyManager: AudioInputDescriptor open ref count cleanup\n\nAlways initialize the mOpenRefCount field.\nAdd functions for management for open ref count.\n\nChange-Id: I0bbd021283047abfebbc108ced68c79e29297f25\n"
    },
    {
      "commit": "a8ecc2c72ca26389bd6b0162181d60aaeaca8149",
      "tree": "d6ad677365066d9d0ecaf81c818f73a477c512e9",
      "parents": [
        "371ed17f26d789c485f9a082f65e2c80ca651489"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Mon Nov 09 16:10:40 2015 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 24 17:57:28 2015 -0800"
      },
      "message": "audio policy: remove deserialization from policy objects\n\nThis patch removes the responsability of the deserialization of all\nobjects managed by the policy by:\n-adding required accessors\n-moving deserialization function to Config parser helper\n-adds a TypeConverter to associate string to / from values of all\naudio enumeration shared between HALs and policy.\n\nChange-Id: I1ce798848f4657b37e47446c9fbdc63f7ed0390e\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "d60560af7cb559762593161c8202459cc01fb0f5",
      "tree": "d2913f6eb8ded236fba95d7920cca8f7906288e6",
      "parents": [
        "0443ba44a1ebda31bc3642cd91a0570694f29ec1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 10 11:31:20 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 29 16:55:40 2015 -0700"
      },
      "message": "audio policy: add support for external audio sources\n\nAdd support for activity on external audio sources.\nAn external source reflects activity on an input audio device\nthat must be controlled (both routing and volume) by the\naudio policy manager.\nFirst, the input device must be connected with setDeviceConnectionState().\nThen, the source activity is indicated with startAudioSource() and\nstopAudioSource() APIs.\nstartAudioSource() indicates the source device with an audio port configuration\nand the use case by the audio attributes.\n\nOnce a source is active, its routing and volume are controlled by the policy manager\nas it would for a software source (AudioTrack).\n\nChange-Id: If5805d58a4356b2f681f1aabf54375f62b55b98a\n"
    },
    {
      "commit": "d90d042269d174104cbcddb078f835296571cf87",
      "tree": "7f6425d30c603ed9c2ea16c62957407dbd318df0",
      "parents": [
        "86803a9be4dbe0c544aff4c44b186433b9efed26",
        "adf760b98f22597bd0133c67af40d983a3e014c6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 16 12:07:11 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 16 12:07:11 2015 +0000"
      },
      "message": "am adf760b9: am fba67941: am 0eb5a270: Merge \"audio policy: fix transition from VoIP to voice call on USB\" into mnc-dr-dev\n\n* commit \u0027adf760b98f22597bd0133c67af40d983a3e014c6\u0027:\n  audio policy: fix transition from VoIP to voice call on USB\n"
    },
    {
      "commit": "9690bf3690c9b720656cebf6da390800e7395213",
      "tree": "44b90af4e5c7376812855fe6b0cc07f420b2ced3",
      "parents": [
        "ad13fcc2da66143484939afafc2893cfc6fa201e",
        "27d07a9a0366bab299a4b08c24e9bc4e94d14ac0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 15 18:31:12 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 15 18:31:12 2015 +0000"
      },
      "message": "am 27d07a9a: am 26639898: am 0926aab4: Merge \"audio policy: fix USB mic selection for VoIP\" into mnc-dr-dev\n\n* commit \u002727d07a9a0366bab299a4b08c24e9bc4e94d14ac0\u0027:\n  audio policy: fix USB mic selection for VoIP\n"
    },
    {
      "commit": "c0a889f766953b657a5e997bc1362661806d3a19",
      "tree": "fb0a2248a68bf20df0adfccf4cdcc7dce2c5d6b0",
      "parents": [
        "0926aab4b8d5d307c95788086090e8d2b2763f1f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 14 14:36:34 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 15 10:53:32 2015 -0700"
      },
      "message": "audio policy: fix transition from VoIP to voice call on USB\n\nMake sure no active capture takes place while in call and the\ncapture device is the same as the call TX device.\n\nBug: 23977713.\n\nChange-Id: Ia379d5e626c150ea49f0cdd581c881dbf0b8399d\n"
    },
    {
      "commit": "c171c7c47d099a52ade95c3c8d8907bf09bb88fa",
      "tree": "1d3aa7df5d0e1a5458efdcadb7748efd76a3e5ae",
      "parents": [
        "036b6593eec6ced2f34293e8407f1cb86ae1e75f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 25 12:21:06 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 15 09:48:06 2015 -0700"
      },
      "message": "audio policy: fix USB mic selection for VoIP\n\nWhen transitioning from speaker phone to normal mode and a USB\nheadset is connected, we must force a teardown of active input\nas the new input device cannot be reached via current input stream.\n\nBug: 24406915.\nChange-Id: I9f7c1d3f3cba285c25a6da1d54a3d15a5c1f378a\n"
    },
    {
      "commit": "f63ae125ca8fc9e430694413b701d3667f3fd63a",
      "tree": "f041ad77bad6255268df8203b54a218b3c25bb9e",
      "parents": [
        "cb1cdf9e6a2e3f07396416f3d2e6ba1bdd2fec51",
        "3d036a8f4ce9ba2a07593b21ef63d83c8a43816e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 24 04:17:54 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 24 04:17:54 2015 +0000"
      },
      "message": "am 3d036a8f: am 8c8d9779: am 45fd99a3: Merge \"audio policy: fix preemtible capture race\" into mnc-dr-dev\n\n* commit \u00273d036a8f4ce9ba2a07593b21ef63d83c8a43816e\u0027:\n  audio policy: fix preemtible capture race\n"
    },
    {
      "commit": "64265b2fb8f5be63b6c2ad4fcbec9acf74705bc4",
      "tree": "a92838f2510034b35b41e78a71bb6385d6f7b557",
      "parents": [
        "6fe78a875793188ff80512db247312109038f181"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 18 18:32:07 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 22 01:07:14 2015 +0000"
      },
      "message": "audio policy: fix preemtible capture race\n\nBecause a preemtible capture session can preempt another one,\nwe end up in an endless loop situation were each session is allowed to restart\nafter being preempted, thus preempting the other one which restarts and so on.\n\nTo avoid this situation, we store which audio session was preempted when\na particular input started and prevent preemption of this active input by this session.\nWe also inherit sessions from the preempted input to avoid a 3 way preemption loop etc...\n\nBug: 24007220.\nChange-Id: I0eab5299440ef3ab9e987635dc9a300cf42f2c79\n"
    },
    {
      "commit": "4137d521e2be255ee109a6c59a1cd273b9029a4c",
      "tree": "5d7bb104c6703e6132dcbfb5c0ab6e9df3d526fe",
      "parents": [
        "164ee879a796f198b1a38f5ab406055a4a5ef2c8",
        "373c7621e21f8f15b4514e719030eb9ca7ebcfe6"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 16 16:49:52 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 16 16:49:52 2015 +0000"
      },
      "message": "am 373c7621: am d3fa3c14: am 20baac2a: Merge \"AudioPolicy: don\\\u0027t always change ACCESSIBILITY volume\" into mnc-dr-dev\n\n* commit \u0027373c7621e21f8f15b4514e719030eb9ca7ebcfe6\u0027:\n  AudioPolicy: don\u0027t always change ACCESSIBILITY volume\n"
    },
    {
      "commit": "af20bc26704458eac0ddc23f12b637939b0df7a4",
      "tree": "df3518ad8366456ead184e0af23b91a6fd477b4f",
      "parents": [
        "f00b70e082c14f789c948f623daca9be7a0e36e8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 14 16:37:07 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 14 16:37:07 2015 -0700"
      },
      "message": "AudioPolicy: don\u0027t always change ACCESSIBILITY volume\n\nOnly change the volume for AUDIO_STREAM_ACCESSIBILITY when\n  changing the media volume.\n\nBug 23366575\n\nChange-Id: Ic42c726ec4d47615c20500c20e4d43cef159b3c6\n"
    },
    {
      "commit": "b367f5b2de343bfd9040028b00acb96567f30bea",
      "tree": "408d72afa38f8724576e3846002c86e778dd87c4",
      "parents": [
        "e3318f9492871e0a06e8a9d518239170c83a0369"
      ],
      "author": {
        "name": "Ravi Kumar Alamanda",
        "email": "ralama@codeaurora.org",
        "time": "Tue Aug 25 08:21:37 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 01 18:10:05 2015 -0700"
      },
      "message": "audiopolicy: do not update channelMask for voice input source\n\nIt\u0027s not needed to update the channel mask based on source because\nthe source is sent to audio HAL through set_parameters() and if source\nequal to VOICE_CALL does not mean that two channels need to capture.\nIf recorder app selects AMR as encoding format but source as RX+TX means\nboth RX and TX are captured in ONE channel. So use channels set by the app\nand use source for the type of capture (RX only, TX only, or RX+TX).\n\nBug: 23484531\n\nChange-Id: Iedf23318356480ba939fc06df4ae4f12906322b3\n"
    },
    {
      "commit": "a09f8cf8c76fa946c4b91be059b420941abcdc3b",
      "tree": "a914917fae4819358c06c5e513438ef416808916",
      "parents": [
        "9697dd11e3586ba91bdec9f378fdaa8cab6ed082",
        "9459fb087c97c3cad66221821eb32755fdb9c9f5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 13 22:08:42 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 13 22:08:42 2015 +0000"
      },
      "message": "Merge \"audio policy: refine TTS stream mute management\" into mnc-dr-dev"
    },
    {
      "commit": "9459fb087c97c3cad66221821eb32755fdb9c9f5",
      "tree": "3ffcdf33603dc84b5c46106e20912e2ef1989356",
      "parents": [
        "3704d6b33896323763f08f8955b918e75cd4a21e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 12 18:36:32 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 12 18:36:32 2015 -0700"
      },
      "message": "audio policy: refine TTS stream mute management\n\nDo not mute the TTS stream if a dedicated output for\nTTS is available.\n\nBug: 22100304.\nChange-Id: Ic126100ce1144f765bc0ae42c8ea87fa47cfb822\n"
    },
    {
      "commit": "82db269d4797cb9909988b723d91fa2094a74b38",
      "tree": "77f2ff4451760a09704ab7676f9e680e9af0729a",
      "parents": [
        "aa7a4eae1cc93ccf90e273b9634f3a125b0b3565"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 13:59:42 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 15:23:46 2015 -0700"
      },
      "message": "audio policy: protect capture from telephony RX path.\n\nAdd permission check if the capture device selected is telephony\nRX path.\n\nBug: 23017158.\nChange-Id: Iaa34d836e6cf46b7cbbf2483fcd4306dcd27ce90\n"
    },
    {
      "commit": "45aabc3578f2362b82f5a425d44e75d4266b1c8c",
      "tree": "da2bc7bbd63b628402972f65122c40fe1a186b07",
      "parents": [
        "7db7948908b21ca2d878d6882cdf1a23a121182f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 06 09:11:13 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 06 09:14:37 2015 -0700"
      },
      "message": "audio policy: populate attributes for attached capture devices\n\nPopulate supported sampling rates, channel masks and formats when enumerating\nattached build in capture devices.\n\nHaving this information for build-in mic is important for some applications.\n\nBug: 22729461.\nChange-Id: I93f03296447a87c10f2615fa1b1c45e9879b4aa7\n"
    },
    {
      "commit": "5de234b29141334c1bb5e40bc19c11836848841b",
      "tree": "00cc7d27395e4705fb5e297b896eccac90714ccb",
      "parents": [
        "f8f669d7a727e4ad5505cd85741f4d50dbaffbf9"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 21 11:42:02 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 21 11:45:43 2015 -0700"
      },
      "message": "Prevent notifications from muting accessibility prompts\n\nWhen evaluating on which device a sound is to be played, the policy\n  must consider which current routing strategy, if any, has priority\n  for overriding the choice. Here the playback of notifications,\n  when duplicated over speaker and headphones, was causing the\n  accessibility prompt to be muted because the it was of a higher\n  priority, and incompatible with the accessibility routing.\nThe fix consists in assigning a higher priority to the accessbility\n  routing strategy over the notification routing strategy.\n\nBug 18834451\n\nChange-Id: I8228b30a7d80bd61d1c223afb030d9421d4f33cf\n"
    },
    {
      "commit": "7c1ec5f038e63a5eb8b04434577c25bc23f5f410",
      "tree": "f6b8feda43ba0bb6666171b57318ad3cea48a45e",
      "parents": [
        "54c0659b9efa72d11997c590c4d377c44789c7fd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 09 14:52:47 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 10 10:58:41 2015 -0700"
      },
      "message": "audio: several fixes in audio routing callbacks\n\n- audio policy:\nForce device change to ensure new audio patch creation\nupon first track activity on a given output.\nFix function device_distinguishes_on_address() which could mistake\nsome output device with remote submix input device.\n\n- audio flinger:\nReduce number of binder calls upon new client registration by only\nsending ioConfigChanged() callbacks to newly registered client.\nFix first patch after output thread creation not triggering an\nioConfigChanged() callback.\n\n-audio system:\nForce client registration upon routing callback installation to force\nnew ioConfigChanged() callback from audio flinger.\n\nBug: 22381136.\n\nChange-Id: Ieb0d9f92f563a40552eb31bc0499c8ac65f78ce4\n"
    },
    {
      "commit": "54c0659b9efa72d11997c590c4d377c44789c7fd",
      "tree": "7ae8b7967c68e0a0c5c973f660e75de4d22aa8cc",
      "parents": [
        "672d9ca1f0a35f3bda02ddfe81e0e10cebba99c3"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Wed Jul 08 09:46:05 2015 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 09 18:51:35 2015 +0000"
      },
      "message": "audio policy: session route: move SessionRoute to common\n\nMove the SessionRoute and SessionRouteMap inner class from policy\nmanager to common policy pillars as initiated by the refactor.\n\nThis code was added at teh wrong place by commit aa981194.\n\nBug: 22376521.\n\nChange-Id: I29aca21614e409c59aae4b7b14163552fb0bffb1\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "63dea1d5334acf3baa9448086dd504ead57d814b",
      "tree": "850a50ae6a88d5aa6d86e82b90f9ad71c12945dd",
      "parents": [
        "dfad5454e0caf46f8732f1415d3b9a76f2a1242e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 02 17:10:28 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 02 17:15:58 2015 -0700"
      },
      "message": "audio policy: fix regression in incall notification management\n\nCommit 2110e04c introduced a regression preventing ongoing alarms to\nbe restored when exiting a call and leaving the replacement tone\nplaying for ever.\n\nAlso add missing management of accessibility prompts when entering a\ncall.\n\nBug: 21857005.\nChange-Id: I4295c791c003db42c0fba9f618e51f60438158d1\n"
    },
    {
      "commit": "cc750d3604b33a92374253b12dd739dc06440aad",
      "tree": "d2fb46dbd9994624d5da2dcd6141add90d79d562",
      "parents": [
        "ed8505836c0b2fba0ab4be0c1eff31d4f241bc1d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 25 11:48:20 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 25 11:48:20 2015 -0700"
      },
      "message": "audio policy: fix several device descriptor issues.\n\n- checkOutputsForDevice() should only clear device descriptor attributes\nif the device is digital.\n- checkInputsForDevice() did not clear device descriptor attributes at all.\n- AudioPort::clearCapabilities() and importAudioPort() should not\nmanage gains as these are device specific.\n- importAudioPort() should load a default port config.\n\nBug: 21990937.\nChange-Id: Ida762ed8f9baaabae392cb4291eff1a8d3009751\n"
    },
    {
      "commit": "9080a4cd8c4e22ddae0350c0c51a20cea1a41016",
      "tree": "14b1ad41e864a8418d529faa9dbd832aa7426d23",
      "parents": [
        "3fc792fe36b0b9100f74185665221b37f650ff65"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Thu Jun 18 08:24:02 2015 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Fri Jun 19 09:02:49 2015 -0700"
      },
      "message": "Fixing no rates, chans \u0026 encodings on input devices for device enum API.\nFiltering digital attributes for non-digital audio devices.\n\nBug: 21876072\n  21903975\n\nChange-Id: Ia5c81a8160f4b4ebf5941dd0c5dfb68d01699ca6\n"
    },
    {
      "commit": "3fc792fe36b0b9100f74185665221b37f650ff65",
      "tree": "114160a4b99b0b203d94f4fbc463d9dc12acf4d7",
      "parents": [
        "3ecc9db40b1fb9c7f807a5892e5c9625aac1fb06",
        "093a20cbe70d0033c085ef7be90b9f1bbacb3335"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 18 00:24:45 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 18 00:24:46 2015 +0000"
      },
      "message": "Merge \"audio policy: fix explicit routing and accessibility\" into mnc-dev"
    },
    {
      "commit": "439e4ed408c21bd65711d279bd5251cef7e83440",
      "tree": "80c8eae9475b4e597f633251fdbac3f0c11eca17",
      "parents": [
        "ca097142ba4664858bc29bb538bcfcf5ea03ebe7"
      ],
      "author": {
        "name": "Ravi Kumar Alamanda",
        "email": "ralama@codeaurora.org",
        "time": "Fri Apr 03 12:13:21 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 11 15:46:26 2015 -0700"
      },
      "message": "audiopolicy: use deep buffer output by default for music streams\n\nDefault disabled. This is enabled by\n\nadb shell setprop audio.deep_buffer.media 1\n\nApplications that use AudioTrack java interface for audio rendering\ndefaults to primary output as flags indicated as FLAG_NONE. If the\nprimary output is low latency output, it results higher power\nconsumption than deep-buffer path if used.\nMake the deep buffer output as default option for music streams if\nflags are not specified.\n\nIt may also be used for testing audio glitches from heavy CPU\nor DRM which may cause issues with the FastMixer.\n\nBug: 21198655\nBug: 21785618\nChange-Id: I909c296ddcf4484b9a877ef1c0230ea58537e06a\n"
    },
    {
      "commit": "093a20cbe70d0033c085ef7be90b9f1bbacb3335",
      "tree": "1e4ecd5a5cfe13d30d3221070511d5f68c7d4a75",
      "parents": [
        "4599da7f4ca67a323aa64d84c1b79e3ce6ab9f41"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 11 12:33:29 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 11 12:33:29 2015 -0700"
      },
      "message": "audio policy: fix explicit routing and accessibility\n\nIf a session has an active explicit routing request, this routing\nmust also be applied to accessibility prompts if accessibility\nusage is currrently remapped to the strategy used by this session.\n\nBug: 20873151.\nChange-Id: I97c6ece98cf1af9c64c2d2eb1fe382c7c0d657b4\n"
    },
    {
      "commit": "72249d5b2f9f42a96c0e0825431e8f3f49b82644",
      "tree": "3eb37e6d1d550e7829d9a4957114c219102babde",
      "parents": [
        "d16a8ef26fd1f7a86061c396c5865564af2f1abb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 08 11:12:15 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 08 11:12:15 2015 -0700"
      },
      "message": "audio policy: fix very verbose log build.\n\nChange-Id: I94a69207059d8010ded14bce5d6e39c3f3074649\n"
    },
    {
      "commit": "08945c44a97d3749cc48f860eb4e01e57183ad90",
      "tree": "d3603562eadffb7b44220575bd1267072dd52237",
      "parents": [
        "db431db53fbbb9024b6e72c528e2d195d63ad544"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 21:36:46 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 01 18:34:14 2015 -0700"
      },
      "message": "Add property to control audio offload with video content\n\nProperty audio.offload.video normally disabled (set to 1 to enable)\n\nBug: 21198655\nChange-Id: Ib1c457b1e3950f18d91b855424aa80bd23c723b0\n"
    },
    {
      "commit": "6374077319a2d060eefe5f4bf425aed37f90c5d0",
      "tree": "50ae6f691720ce4773b6a6757507ee286ba95205",
      "parents": [
        "3a9a6ea4e9f67c6a43f00ae3d980eb475e49deaf",
        "87ffa39d29d1803b48237888a9fbf3d5f2c60c21"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 22 19:23:53 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 22 19:24:07 2015 +0000"
      },
      "message": "Merge \"audio policy: add checks on primary output\" into mnc-dev"
    },
    {
      "commit": "87ffa39d29d1803b48237888a9fbf3d5f2c60c21",
      "tree": "cf0a01c080d17853881d3f9f1d0b72391667c530",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 22 10:32:38 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 22 10:32:38 2015 -0700"
      },
      "message": "audio policy: add checks on primary output\n\nCheck if primary output has been initialized before using it.\nThe primary output may not be initialized either due to HAL failure or\non devices without telephony.\n\nBug: 19573336.\nChange-Id: Id1fc3ed588268e1232b43d1e6235254d2f1a71d0\n"
    }
  ],
  "next": "861a628adbcbe7c3baa6eab1b765b87b480ff4a2"
}
