)]}'
{
  "log": [
    {
      "commit": "e2f34be1b70a564a9e7866934f0b626e98be999f",
      "tree": "e57d0b82ebd689f5734c8bedd84ecbe091d3dd72",
      "parents": [
        "3350096bf8e52b2d96f7b7ba95642d92c05e8f09"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 09 12:31:06 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri May 10 09:52:56 2019 -0700"
      },
      "message": "APM: uid-device affinity: fix for multiple concurrent apps\n\nAudio mix rules that contain both a match and exclude for a uid\n  or usage are ignored for routing evaluation. The implementation\n  of the uid-device affinity caused uid matches and exclusions to\n  be added to any mixes, causing previously valid mixes to be\n  discarded in the routing logic.\nThe fix consists in implementing the uid-device affinity by only\n  applying uid exclusions on mixes that:\n  a/ are compatible with the concept (mixes of players that are\n     render only),\n  b/ do not route to the selected devices\n  c/ do not have a uid match rule (such mixes are already exclusive\n     to the uid to match)\n  d/ do not already have a uid exclusion for the uid\nFix removeUidDeviceAffinities() that skipped the wrong mixes.\n\nBug: 124319394\nBug: 131180578\nTest: atest AudioHostTest#testUidDeviceAffinity\nChange-Id: I813c4cfb15956e56599740948775c32562266c21\n"
    },
    {
      "commit": "36b17553b2c3aad4d8f600edd2e82f9a583ee05a",
      "tree": "b07a90eaf6bcba6f06fd56ab3976d1c71c7fd712",
      "parents": [
        "791d3370830b8e22b8bbaf41c3de900de48d2be3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Mar 07 18:48:07 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 22 17:21:30 2019 -0700"
      },
      "message": "Introduce a system APC with its corresponding opt-out\n\nFor system application with the new permission CAPTURE_MEDIA_OUTPUT, or\nCAPTURE_AUDIO_OUTPUT, allow to capture the audio of playing apps that\nallow it.\n\nTest: adb shell audiorecorder --target /data/file1.raw\nTest: atest android.media.cts.AudioPlaybackCaptureTest\nBug: 111453086\nChange-Id: I5bfca51e48992234508897c595a076d066db26b2\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "17dc17828f0aedb037cf974daeb44645f390cb49",
      "tree": "a269ec1665e47843b76ef33fde2ffcc1c57f5e02",
      "parents": [
        "33d6adcebbac541a803a08013db15a84e4b82bcf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 10 19:00:05 2019 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 10 19:00:05 2019 -0800"
      },
      "message": "Audio policy: uid device affinity deterministic rule\n\nWhen setting a uid device affinity, make the rules deterministic\n  by applying an \"exclude\" rule on all mixes that don\u0027t reach\n  the devices (existing), but also a \"match\" on the mixes that\n  do (new).\nBug: 111647296\nTest: requires device with routing policy started by CarService\n\nChange-Id: I3bb844156ade75e4b9576c1e18200ca90ce26cf9\n"
    },
    {
      "commit": "bda70da1f0fb32d37abd704ff8618e55661be0a9",
      "tree": "a850374439d404da29938e2b038457926197d826",
      "parents": [
        "abf2929e8d084d2ca99d4d8712abbf31c2cb5178"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 19 07:30:15 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 12:27:35 2019 -0800"
      },
      "message": "Dynamic audio policies: multi-zone through uid/device affinity\n\nSetting audio device affinity for a given uid augments all\n audio mix criteria that do not route to the given devices\n to exclude the uid.\nAudioPolicyManager: after changing the device affinity,\n check the outputs addressing the devices to re-evaluate\n audio routing\n\nBug: 111647296\nTest: requires device with routing policy started by CarService\nChange-Id: I72de54ae067151fe6ac2ec43b78fe544a9fd9888\n"
    },
    {
      "commit": "538ec5e04f389cba637b030757be317fcb8677a8",
      "tree": "c9c576057efe1f6c0bdf1a4cbf6b58dce68f5e3f",
      "parents": [
        "e085c1072f017d4910f7e49741f72e8a722b8892"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 02 13:21:22 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 04 12:14:36 2016 -0700"
      },
      "message": "Split libmedia into libmedia and libaudioclient\n\nThis makes it so audioserver doesn\u0027t need to link against the entire libmedia,\nwhich has dependencies on camera, ICU, OpenGL and other things that aren\u0027t\nneeded for audio.\n\nTest: build/boot\n\nChange-Id: I99ba1a3dc3b33ca9b3abd98e7519dbf228ee62af\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": "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": "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": "de80105c3f2db0eabd47640c49387ea3b44d4782",
      "tree": "9775c7bbe30ef1ab13a888def8531cb0f87b1756",
      "parents": [
        "079e121934106860af5ff5491bd3884453d1fdb3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 14 19:10:14 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 14 19:20:20 2015 -0700"
      },
      "message": "AudioPolicyManager: notification of dynamic policy mix activity\n\nImplement non-stream type specific ref counting in output\n  descriptors to keep track of mix activity.\nNotify audio policy client of mix activity changes.\n\nBug 20226914\n\nChange-Id: Iec939cb640c58056f88947b611d23b4bb6d8a11b\n"
    },
    {
      "commit": "40bc906252974d0b389ae4a147232d0c9a97193f",
      "tree": "95301839473e4c0d3be9ef1bd2e8c1d3677964a6",
      "parents": [
        "ae4b879d04c4b07c62241a8f507c8dce11e628e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 09:09:33 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:57 2015 -0700"
      },
      "message": "namespace does not need a closing semicolon\n\nChange-Id: Ie8f9d42fc061f6d558f23b98414e04eb3d14b376\n"
    },
    {
      "commit": "275e8e9de2e11b4b344f5a201f1f0e51fda02d9c",
      "tree": "c22e1c0b8541aa04fd6c8d803e4fa6704a84e6e2",
      "parents": [
        "82a69ea8b090d57bff5e02774688b546a711bbb8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Nov 30 15:14:47 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 09 15:47:19 2014 -0800"
      },
      "message": "audio policy: add support for custom mixes\n\nAdd support for custom mixes in AudioPolicyManager.\n\nTwo methods are added to register or unregister a list of custom mixes\nwith their attributes and format.\n\ngetOutputForAttr() and getInputForAttr() first look for a match in\nregistered mixes before defaulting to normal output/input selection\n\nRemote submix device connection disconnection now takes address into\naccount to identify the correspnoding custom mix.\n\nBug: 16009464.\n\nChange-Id: I3f1c2a485a0fb71b1f984ed0adc9b68aa971e408\n"
    }
  ]
}
