)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "861a628adbcbe7c3baa6eab1b765b87b480ff4a2",
      "tree": "8d1e10f24987535156df45df180c366b97f19b31",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 18 15:40:16 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 19 16:42:42 2015 -0700"
      },
      "message": "audio policy: fix direct output profile selection\n\nFix logic in AudioPolicyManager::getProfileForDirectOutput()\nto select the direct output with most matching flags and not just\nthe first compatible one.\n\nAlso fixes issue 17783395 which was fixed by commit f7bc29b02\nin lmp-tv-dev branch only but in a way that caused a regression\nfor HW A/V sync (issue 19384172).\n\nAlso removed duplicated code lines in getOutputForDevice()\n\nBug: 20819715.\nBug: 17783395.\nBug: 19384172.\n\nChange-Id: I7fc793b37f9b53fabd92cab6b884ef85cfdafee4\n"
    },
    {
      "commit": "c36a8897ff877f4c5b2e0580830faef8b87dd74a",
      "tree": "3bc502e47b787ba704de74d5cd08c77ac64e3e04",
      "parents": [
        "804a77d1045c6c4023f73a0975a09025b2e8eef2"
      ],
      "author": {
        "name": "Ravi Kumar Alamanda",
        "email": "ralama@codeaurora.org",
        "time": "Fri Apr 24 16:35:49 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon May 11 15:06:35 2015 -0700"
      },
      "message": "audiopolicy: Use AUDIO_OUTPUT_FLAG_TTS for TTS stream\n\nUse AUDIO_OUTPUT_FLAG_TTS by default for TTS stream to see\nif the HW supports a dedicated output for the same. If not,\nfallback to primary output as it is done currently.\n\nChange-Id: Ifb2ef7066e75c61fe4c1b9783c12627386a00ea5\n"
    },
    {
      "commit": "7288ab87a7aa730ffe97d7dc7e118123107bfcea",
      "tree": "c12aa50cbf887e27579bdf4bb79d170f51dcebf1",
      "parents": [
        "464c7e085b68dd63ce8cdbb2c389d3827f8d586a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 18:44:02 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 18:44:02 2015 -0700"
      },
      "message": "audio policy: clarify use of mName field for audio devices\n\nThe audio port field mName was used for two different purposes\nwhich caused a problem when exposing this information at the SDK API.\n\nCreate a new \"mTag\" field storing the audio_policy.conf device tag\nif needed.\nField \"mName\" is now used to store any additional name associated to\na given device when available (e.g Manufacturer and model name for a USB device).\n\nChange-Id: I17fa872e4a3a2e1b7cbb807c6f72e095a8a2c9c5\n"
    },
    {
      "commit": "5f9bf49397b36ad4ebd838aef66b83e9e9fa42bc",
      "tree": "f69b635690cbc2cff9e5cfb8843e4473cc327208",
      "parents": [
        "1471e7a112aed5ff120c2b97bced9523ed39fe6c",
        "8c7e6dac6f5eb38cef627dab92eac8b38513450c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 19:50:55 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 19:50:55 2015 +0000"
      },
      "message": "Merge \"audio policy: session routes continued.\" into mnc-dev"
    },
    {
      "commit": "8c7e6dac6f5eb38cef627dab92eac8b38513450c",
      "tree": "6aede3a6ac013462a117ffb181d93439525eebeb",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 17:37:00 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 12:43:06 2015 -0700"
      },
      "message": "audio policy: session routes continued.\n\n- Clear session routes when client process dies.\n- Enforce the route only when the requesting session is active.\n- Fix requested route not working if an output mix change is required\n(e.g forcing to SPEAKER when the default route is USB or A2DP).\n- Make sure all sessions sharing the strategy with a rerouted session\nhave the same route (needed for volume control consistency)\n\nChange-Id: I0ab347a8fb97e73e2c5965374544c5f4fe509ef1\n"
    },
    {
      "commit": "d641af3e9faf6c053ccbeea1bc20790021e57a11",
      "tree": "f2c1fa01f2321024396ac4bda949d74965a547f9",
      "parents": [
        "d707ac5a0494398cb1306ead0ba587034f610f30",
        "f613d42b12389335b2ecf06df18d0d095d6bfd44"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 30 16:43:17 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 30 16:43:21 2015 +0000"
      },
      "message": "Merge \"AudioSystem callback for dynamic policy mix activity\" into mnc-dev"
    },
    {
      "commit": "f613d42b12389335b2ecf06df18d0d095d6bfd44",
      "tree": "b36177007932b781d9db2bb973cb2feaab3cde13",
      "parents": [
        "dae24729d0b3ced8c4a7d7f9b631e852f564db4f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 23 18:41:29 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 29 17:54:12 2015 -0700"
      },
      "message": "AudioSystem callback for dynamic policy mix activity\n\nAdd method to AudioPolicyServiceClient for dynamic policy mix\n activity notification.\nPropagate notification to a dedicated callback.\n\nBug 20226914\n\nChange-Id: I37928ed38e15ea2b8fed022cccadeca8c4d6c876\n"
    },
    {
      "commit": "466dc8ed6ca6b7f585104806c48613dd34e608c9",
      "tree": "086bbd91d48e366377c02df8a65a5e2bad8675a6",
      "parents": [
        "dae24729d0b3ced8c4a7d7f9b631e852f564db4f"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Fri Apr 17 13:15:36 2015 -0600"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Apr 28 10:46:14 2015 -0600"
      },
      "message": "Explicit routing in AudioRecord\n\nChange-Id: I9cc5d54883a3e5c75d553fabb619fc8e49f4f9e5\n"
    },
    {
      "commit": "7d7ea036436320b03bef826d78c4c035b67edbd0",
      "tree": "35c3322983d83f97abcde43da37329ac98f6b122",
      "parents": [
        "11f88677e9a9405d2b5d7f7bf9b6eec035b6331d",
        "2b0c1fc0d0ad3744a32d48234f255d82a5c80ded"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Apr 24 21:09:05 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 24 21:09:05 2015 +0000"
      },
      "message": "Merge \"AudioPolicyManager: notification of dynamic policy mix activity (input)\""
    },
    {
      "commit": "493404d8c396e15ed73455acd39aa0f1940996e2",
      "tree": "a07080e7733732fd7273963cca1c93436b86b997",
      "parents": [
        "c9c3804a2caf3c0f96e7a8985f82db7ceef490df"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 15:07:36 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 22 08:12:53 2015 -0700"
      },
      "message": "audio policy: fix AudioTrack output device selection\n\nHave AudioTrack::setOutputDevice() set CBLK_INVALID flag instead\nof calling restoreTrack_l(). This allows restoreTrack_l() to be called in\na safe context.\n\nAllow device change while the AudioTrack is active by forcing a new\ndevice selection in startOutput() if the output route for this\nsession was changed.\n\nRemove some warnings.\n\nChange-Id: I2d921a63c9bfa0e122233645e2d6d39f95f5f17d\n"
    },
    {
      "commit": "2b0c1fc0d0ad3744a32d48234f255d82a5c80ded",
      "tree": "cc3528a394494724bba3443b92faa8a1bd7c6846",
      "parents": [
        "3249558196082087fb8bd0a847ef5c6000c8b925"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 15 17:29:28 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 21 14:15:54 2015 -0700"
      },
      "message": "AudioPolicyManager: notification of dynamic policy mix activity (input)\n\nUse ref counting on start/stop inputs to notify audio policy client\n of mix activity changes.\n\nBug 20226914\n\nChange-Id: Ic4f9c91301d0bcbc0ff749acebdc3b2300309c38\n"
    },
    {
      "commit": "554a277d4e42a3d3df3d90ba0e7dfa2d31690e32",
      "tree": "3647500470a7eca8095102a0e2818acb848cdf6a",
      "parents": [
        "3249558196082087fb8bd0a847ef5c6000c8b925"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 10 11:29:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 15 23:15:38 2015 +0000"
      },
      "message": "audio policy: add binder calls for audio source control\n\nAdd binder methods to IAudioPolicyService to control activity\nof external audio sources (e.g FM tuner).\n\nChange-Id: I2008308a6a996baeae502b68a790d87281efe2ff\n"
    },
    {
      "commit": "f129b03fa583d4cc26fd9c9171b8fb3b0ed8d4f4",
      "tree": "cc6ebb41d964a77f5fe5b29e8a360d1a1e4cf7b9",
      "parents": [
        "b6347ac62b36b4d9578d181ba83bf8e6446298e8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 07 13:45:50 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 18:47:28 2015 -0700"
      },
      "message": "Enable 8 bit and float pcm record formats for AudioPolicyManager\n\nAdd capability for handling different record channel masks.\n\nChange-Id: I63f6b029aca5cefff7adf26198a3b594a7ea2d71\n"
    },
    {
      "commit": "b6347ac62b36b4d9578d181ba83bf8e6446298e8",
      "tree": "fa04d4c41a7f661448668c01a056b9e71297cd16",
      "parents": [
        "17769490d499bc665ddfef83143ac1ed647fa0d4",
        "dacc06f5e8d00ace9d16a149fc41ff65323ffbb3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 09 01:33:20 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 09 01:33:20 2015 +0000"
      },
      "message": "Merge \"Fix AudioPolicyManager dynamic policy initialization\""
    },
    {
      "commit": "dacc06f5e8d00ace9d16a149fc41ff65323ffbb3",
      "tree": "66fc2772a1a663554e871dabc96f9e1cd5a740fc",
      "parents": [
        "e41b5f31148f9cfb7316295c900c7d3c695510b2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 08 18:16:39 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 08 18:19:16 2015 -0700"
      },
      "message": "Fix AudioPolicyManager dynamic policy initialization\n\nAudioPolicyManager::getInputForAttr() is initializing the AudioMix\n for the new AudioInputDescriptor.\nThe audio policy manager refactoring introduced a regression where\n the association of an existing AudioMix (registered when the\n associated AudioPolicy was registered) with the input descriptor\n copied a value of local scope, instead of referencing the\n AudioMix in the list of mixes.\n\nBug 20081375\n\nChange-Id: Iddd57fed8525880afd1d4a5493f97130aabe4816\n"
    },
    {
      "commit": "ffbc80f5908eaf67a033c6e93a343c39dd6894eb",
      "tree": "c97aa681b8c70d7429f7be93f851f04e9dee5900",
      "parents": [
        "c75307b73d324d590d0dbc05b44bce9aa89b7145"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 18 18:30:19 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 08 18:08:24 2015 -0700"
      },
      "message": "audio policy: volume in dBs\n\nVolumes are now stored and exchanged in dBs to be\nconsistent with the volume tables.\n\nThey are converted if needed when applied to the target\ngain controller.\n\nChange-Id: I916cbb0bbe65c916444b8c65a2bdca9645c58399\n"
    },
    {
      "commit": "c75307b73d324d590d0dbc05b44bce9aa89b7145",
      "tree": "824a23a9ffbebb3ace63146c171e938df6630fdd",
      "parents": [
        "303db9de6506db0c2b300863c39ece81721dd4e9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 17 15:29:32 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 08 18:08:11 2015 -0700"
      },
      "message": "audio policy: volume control reorganization\n\nOutput volume and routing control by AudioOutputDescriptor\nis reorganized to prepare hardware source volume and routing\ncontrol.\nAudioOutputDescriptor contains all volume, device and activity\nstate common to software (audio flinger mixers) and\nhardware sources (tuners, A2DP, HDMI).\nA new class SwAudioOutputDescriptor is derived from\nAudioOutputDescriptor and is specific to software sources.\n\nLow level routing and volume control methods receive an\nAudioOutputDescriptor parameter instead of an IO handle.\n\nmPrimaryOutput is now an AudioOutputDescriptor.\n\nChange-Id: Ie90943ee3102cdb8adf89fdd2addd2c279b1e5bf\n"
    },
    {
      "commit": "3bcf8597189c592713675ec58326ecbef0ac4ae9",
      "tree": "5656987c2e9d6fe9c99bb632865318489432fe36",
      "parents": [
        "322b4d25387a04c9afebe998326d005bbdf17ede"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 03 12:13:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 08 12:38:08 2015 -0700"
      },
      "message": "audio flinger: improve device to device audio patches\n\nAllow creation of audio patches between input and output\ndevices managed by the same audio HW module.\n\nChange-Id: I4b83268a4d5c41f3d5905d7581202cf5193efd32\n"
    },
    {
      "commit": "322b4d25387a04c9afebe998326d005bbdf17ede",
      "tree": "3cf0c2912dc7cb75acb60526bef382dd90e9a51d",
      "parents": [
        "6dc4dc4ad23dc82eca9af3112292f3e6d5b17b15"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 03 15:57:54 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 08 12:37:35 2015 -0700"
      },
      "message": "audio policy: fix unique audio port ID.\n\nRemove mId member from AudioPort as it was shadowed\nby mId in DeviceDescriptor.\n\nAdd getters for Id, and HW module name and version to device,\noutput and input descriptors.\n\nFix DeviceDescriptor name initialization.\n\nChange-Id: I4a69f385e40330954d9dad5f2926c521f60b2ec1\n"
    },
    {
      "commit": "aa9811945f575614b3482d09e4d969792701cebb",
      "tree": "1744aa567efe78c3062ec80da19277d96def0725",
      "parents": [
        "41efeb2b477066d96ad34a048f34fb6fb34213ec"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Sat Mar 21 09:55:15 2015 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Wed Apr 08 09:51:07 2015 -0700"
      },
      "message": "Adding explicit routing API to AudioTrack\n\nChange-Id: I40c048c7644c46f4e4f7103875206c0785c4b1dc\n"
    },
    {
      "commit": "887a9ed4446cb451181c392a0e51a69914e58fbf",
      "tree": "148916028dcdf5c2db173f62f1b063412d070124",
      "parents": [
        "2110e04cdfbf9ad85ce154ce5f778ee5ccfc95eb"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 31 18:02:24 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 11:29:43 2015 -0700"
      },
      "message": "Updates to AudioPolicyManager refactor\n\nUse protected access in AudioPolicyManager class for\n - engine field\n - querying phone state\n - isStrategyActive\n\nFix inclusion of AudioPolicyManagerInterface header.\n\nUse \"APM_\" prefix in audio policy conf parsing code to avoid\n naming conflicts with some HALs.\n\nDeviceDescriptor and its collection class are good friends now.\n\nChange-Id: I236d62a2b8a4b6bf68dd515932650b912577c145\n"
    },
    {
      "commit": "2110e04cdfbf9ad85ce154ce5f778ee5ccfc95eb",
      "tree": "5051da296e1fbc067db7ac190334d7d98a4410eb",
      "parents": [
        "dfd7409c1b708f6c429aa43722ca8493a91d8df0"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Tue Mar 24 08:41:51 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Split ManagerDefault into manager and engine\n\nThis patch defines an interface for a new component: policy engine.\nThe APIs found under this interface are the one we may want to customize\nand to configure easily.\nThis patch also split the current manager code into manager and engine to\nprovide a default version of the policy engine.\n\nChange-Id: I97cf59760b53d248fe9efe466ae5e73bd7e5cc06\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "dfd7409c1b708f6c429aa43722ca8493a91d8df0",
      "tree": "527972dbd2a5ad014137b57128ca5100d7ca07a2",
      "parents": [
        "df37269852ea92bafd939fe793209d0581c4a574"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Thu Mar 19 12:10:59 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Create StreamDescriptor and associated collection within common\n\nCreate StreamDescriptor and associated collection within common\ncommon policy pillar elements.\nIt moves the code from managerdefault and creates helpers function within\nthe collection.\nIt also split the AudioGain in a common volume header and AudioGain class.\n\nChange-Id: I1bb80e4219506f8c9042367085db328d317cb668\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "df37269852ea92bafd939fe793209d0581c4a574",
      "tree": "673a3e9838f06a33c6304942d8138b1eb224d348",
      "parents": [
        "45ed3b053d9af2250f5ece9ee4e826905c3763a7"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Thu Mar 19 10:43:27 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Create SoundTriggerSession and associated collection within common\n\nThis patch creates a SoundTriggerSession and associated collection within\ncommon policy pillar elements.\nIt moves the code from managerdefault and creates helpers function within\nthe collection.\n\nChange-Id: I83ea230573c05e8ab99f4489c20059ed27678221\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "45ed3b053d9af2250f5ece9ee4e826905c3763a7",
      "tree": "97926c3be950a64e504347c103fe41628b4939da",
      "parents": [
        "036e1e9126dcd496203434aa69e52115d8e730cc"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Thu Mar 19 10:35:14 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Add EffectDescriptor and associated collection to common elements\n\nThis patch adds EffectDescriptor and associated collection to common\npolicy pillar elements. It moves the code from the policy manager\nand creates helpers function in the collection.\n\nIt also factorize the RoutingStrategy structure within a separated header\nfile.\n\nChange-Id: I29964ff77564fadedf3237c8754240b21ae77297\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "036e1e9126dcd496203434aa69e52115d8e730cc",
      "tree": "028893f5dffed7b590638a52e32bd864eeb13954",
      "parents": [
        "53615e29c99c5e9d2ca77aaefd7bf5c770513120"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Thu Mar 19 10:16:24 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Add AudioMix and AudioMixCollection to common policy element\n\nThis patch adds AudioMix and associated collection to the common\npolicy pillar elements library.\nIt removes the code from the manager and creates also helpers function\nassociated to the mix collection.\n\nChange-Id: Ia3536fdef09da13734d2895030d736c701040237\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "53615e29c99c5e9d2ca77aaefd7bf5c770513120",
      "tree": "18a576affc2dcecdc1431027f6d348ef0678cae0",
      "parents": [
        "98cc191247388132b6fd8a4ecd07abd6e4c5a0ed"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Thu Mar 19 09:24:12 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Migrate helper functions from managerdefault to common\n\nThis patch moves from manager to common:\n\n-parse helper functions of the policy configuration file\n-collection helper function on\n\t-output / input descriptors\n\t-DeviceDescriptor\n\t-AudioPatch / Audio Port\n\t-IO Profile\n\t-HwModule\n\nChange-Id: If45e53418db75af1af198f43c4ef27884499055f\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "98cc191247388132b6fd8a4ecd07abd6e4c5a0ed",
      "tree": "b447149a320aabc6fb28f2522e6a55db835ce537",
      "parents": [
        "ad3183e2d4cecd02f6261270a7ea1c68be0efa0f"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Wed Mar 18 17:52:40 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:19:16 2015 -0700"
      },
      "message": "Split ManagerDefault into Manager and ManagerDefinitions\n\nThis patch splits the managerdefault into a manager and a manager\ndefintion library that contains all pillar elements of a policy manager.\n\nIt renames the file with the name of the main class they contains.\n\nIt splits the AudioPort into AudioPort and AudioPatch.\n\nChange-Id: I992cf0b8aed895805cc003ba0980d2c9e92c985b\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "ad3183e2d4cecd02f6261270a7ea1c68be0efa0f",
      "tree": "5c08be8ee10c2525c0df9dc42529d5fae0240b74",
      "parents": [
        "4de725a32a825bd26d9fc0ec6901ffffa92778e1"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Wed Mar 18 16:55:35 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:19:16 2015 -0700"
      },
      "message": "Audio Policy Refactor: reorganise headers inclusion\n\nThis patch reoganises the headers inclusion in order to prepare\nthe split of managerdefault into a manager and a separated lib\nof pillar policy elements.\n\nIt also moves back the isStrategyActive to the manager to avoid\nany dependancies from this pillars to the manager.\n\nChange-Id: I1a35c45d86db7a3878a40dc7d6858dfea37c5ac9\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "ac41a6f253a69671f6e018fcc84daf0030615ca9",
      "tree": "17fe629ef01986411dd6cfcae1552a3b0a02c8b7",
      "parents": [
        "765f27c2376e83766d9e1d8f8136025c5437ce49",
        "f5d144f7ca773750ea7be371f14f9fc975a15862"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 30 19:39:10 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 19:39:11 2015 +0000"
      },
      "message": "Merge \"audio policy: fix IOProfile::isCompatibleProfile()\""
    },
    {
      "commit": "f5d144f7ca773750ea7be371f14f9fc975a15862",
      "tree": "e43a14e4c74293289770e712fc8a81a47da9206b",
      "parents": [
        "84b784dd4f340331d36b1be3de05a6c814d9795c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 26 19:00:00 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 30 10:58:50 2015 -0700"
      },
      "message": "audio policy: fix IOProfile::isCompatibleProfile()\n\nHandle composite devices in IOProfile::isCompatibleProfile()\nby just checking the type in this case, not the address which is relevant\nonly if a single device type is passed as input.\n\nAlso remove warning.\n\nBug: 19762960.\nChange-Id: Iaecb7fcfbf7ad39b1e33cb460922f7c069a34a00\n"
    },
    {
      "commit": "4c91f90c72e74474fad7f6a99ae7926c8d1f2504",
      "tree": "8686614058927003da3349a93a87af3883df732b",
      "parents": [
        "84b784dd4f340331d36b1be3de05a6c814d9795c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 18:15:31 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 26 18:33:19 2015 -0700"
      },
      "message": "audio policy: fix DeviceVector::getDevicesFromType()\n\nFix device type comparison in DeviceVector::getDevicesFromType():\nAUDIO_DEVICE_BIT_IN bit must be excluded from type comparison\nand used as an orthogonal match criterium.\n\nChange-Id: Ie7378723f5a3d613b1b045ccdda69650a9d655fc\n"
    },
    {
      "commit": "ac48c28215798e4135396f09d583b22302636735",
      "tree": "c3e09c279117bddfa35f3e2b2a9d103c6330a9c8",
      "parents": [
        "eb0ee0e842d3b8294aa6c0b797eaf7aff3fd2f89",
        "6fa7083f26895ede2331eeb3897f9ae659aae9bf"
      ],
      "author": {
        "name": "Rakesh Iyer",
        "email": "rni@google.com",
        "time": "Mon Mar 16 17:21:22 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 16 17:21:23 2015 +0000"
      },
      "message": "Merge \"Remove mId from DeviceDescriptor.\""
    },
    {
      "commit": "6fa7083f26895ede2331eeb3897f9ae659aae9bf",
      "tree": "1e14c9ddd3392e935a631525b032b11dad1b31a2",
      "parents": [
        "88b456640085fa0e92d66e42ddaf24449c8c4fdb"
      ],
      "author": {
        "name": "Rakesh Iyer",
        "email": "rni@google.com",
        "time": "Fri Mar 13 15:40:29 2015 -0700"
      },
      "committer": {
        "name": "Rakesh Iyer",
        "email": "rni@google.com",
        "time": "Fri Mar 13 15:44:32 2015 -0700"
      },
      "message": "Remove mId from DeviceDescriptor.\n\nDeviceDescriptor inherits from AudioPort which has the correct\nhandle mId. The mId in DeviceDescriptor shadows this so calls\nlike DeviceVector::getDeviceFromId() findDeviceById fail because\nthey are looking at the wrong mId. The failure itself manifested\nas createAudioPatch failing.\n\nChange-Id: I8dd012d0678facaac84844b92226cc4b788abece\n"
    },
    {
      "commit": "ec8930f218fa0c1acde631543b40b5a0b28bfe1f",
      "tree": "0e81f9b456530eb8a745681726e4720e131bef77",
      "parents": [
        "f9d19514b3e620b6339c98a442da833a702915ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 15:56:22 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 09 15:56:22 2015 -0700"
      },
      "message": "Fix warning while building mediaserver\n\nIn file included from frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.h:31:0,\n                 from frameworks/av/services/audiopolicy/service/AudioPolicyService.h:38,\n                 from frameworks/av/media/mediaserver/main_mediaserver.cpp:36:\nframeworks/av/services/audiopolicy/managerdefault/ConfigParsingUtils.h:29:0: warning: \"ARRAY_SIZE\" redefined\n #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))\n ^\nIn file included from frameworks/av/media/libmediaplayerservice/MediaPlayerService.h:31:0,\n                 from frameworks/av/media/mediaserver/main_mediaserver.cpp:35:\nframeworks/av/include/media/stagefright/foundation/ABase.h:21:0: note: this is the location of the previous definition\n #define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a)))\n ^\n\nChange-Id: I4b80f783c592a78aa88b3dad297278353740466e\n"
    },
    {
      "commit": "acc930d104534dff89d5e336d22d2310069ca7c2",
      "tree": "1bd6f8f33db1549d0fe3663dbe72a7570957af35",
      "parents": [
        "96faa25f4aea2c792523ae920da91f919f5ea392"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 04 10:08:29 2015 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 04 10:08:41 2015 -0800"
      },
      "message": "audiopolicy: Do not route VoIP call to HDMI\n\ngetDeviceForStrategy is returning AUDIO_DEVICE_OUT_AUX_DIGITAL\neven  when setForceUse is called with FORCE_NONE(earpiece)\nduring VOIP call.\nActual Intention is to route audio for phone strategy to AUX\ndevice even after setForceUse is called with FORCE_NONE when not\nin voice call. It is supposed to exclude VOIP call too.\n\nBug: 19522164.\n\nChange-Id: I88d515c351f066305f9eed240b1fe5f60ef34f85\n"
    },
    {
      "commit": "56ec4ffcbae8aeac6c5245fc7b825d02e2e6cefd",
      "tree": "914941adb956f3af389b9a7b955f3534eec4fe7a",
      "parents": [
        "8f7b7fa417566e9a6a29ea9f0e220b3cd6d1a9e3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jan 23 16:45:18 2015 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 18 17:29:20 2015 -0800"
      },
      "message": "Refactor AudioPolicyManager\n\nAudioPolicyManager implementation is now split into the\nfollowing files:\n\nfiles managerdefault/Gains.*\n  class AudioGain\n  class VolumeCurvePoint\n  class StreamDescriptor\n\nfiles managerdefault/Devices.*\n  class DeviceDescriptor\n  class DeviceVector\n\nfiles managerdefault/Ports.*\n  class AudioPort\n  class AudioPortConfig\n  class AudioPatch\n\nfiles managerdefault/IOProfile.*\n  class IOProfile\n\nfiles managerdefault/HwModule.*\n  class HwModule\n\nfiles managerdefault/AudioInputDescriptor.*\n  class AudioInputDescriptor\n\nfiles managerdefault/AudioOutputDescriptor.*\n  class AudioOutputDescriptor\n\nAll files for libaudiopolicyservice are moved under service/\n\nAll files for libaudiopolicymanager are moved under manager/\n\nChange-Id: I43758be1894e37d34db194b51a19ae24461e066e\n"
    }
  ]
}
