)]}'
{
  "log": [
    {
      "commit": "2329638e097622653cb2c4acc145b996e317a38b",
      "tree": "d25dccdc184ac7ce8b7aceb227411592ff256484",
      "parents": [
        "10edfcf70857cc0a22afbbd3fc8f57f0c8a2953a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 15:45:11 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 21 10:30:58 2017 -0800"
      },
      "message": "aaudio: use xruns detected in the service\n\nThe service knows when an actual xrun occurs so we pass\nthat value to the client.\n\nBug: 38512417\nTest: write_sine_callback -pl -n1 -s20 -c2 -u\nChange-Id: I9e5ff1edd2e9378957309280162d7cda855f5adb\n"
    },
    {
      "commit": "be0a5b6e2c204446274248e1fa058e30f46b4b71",
      "tree": "ef61e6bc874fd89e0f2e5b60ffa96555a0656000",
      "parents": [
        "7de1920b41a7c5a6aa466dcd4fffc936193328b1"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 12 15:56:00 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Oct 17 12:15:07 2017 -0700"
      },
      "message": "aaudio service: prevent disconnected endpoints from being used\n\nAlso close the internal stream used by AAudioServiceEndpointShared.\n\nThis prevents a resource leak caused by an app not closing a\ndisconnected stream.\nIt also prevents an app from reopening a device that was just\ndisconnected.\n\nBug: 67664976\nTest: test_bad_disconnect.cpp should get new device ID after disconnect\nChange-Id: I9a234b5704d62af788064fdd352b63181ad7e559\n"
    },
    {
      "commit": "b92c988ffc48f093ab8615896b02b8c8e10e19b2",
      "tree": "32472c5cce0546223e63dcc76a6be9add080cc43",
      "parents": [
        "523b3047af443d0a51141ddabd328d52be5a23b0"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 11:39:15 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 23:29:48 2017 +0000"
      },
      "message": "aaudio: fix audioserver crash when starting a stream is rejected\n\nBug: 65738271\nTest: repeat when not root:   input_monitor  -m2 -pl\nChange-Id: I98659dbd78a75785565b1b6f0254a48220253af6\n"
    },
    {
      "commit": "bcc3674648bc6f554d89a2a5d7721ed41c53f83b",
      "tree": "ae3f8fcecce7f06b44088ff4c8adf3248f287f4b",
      "parents": [
        "7328a80ffc83729cc6252c79e0851a31af59c653"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 31 17:24:51 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 17:21:34 2017 -0700"
      },
      "message": "aaudio: fix timestamps and underruns\n\nStart the client after we get valid timing data from the server.\nThat can take a while because of the long cold start times.\nThe client is synced with the current position of the service.\nNow the client can start clean with no underruns.\n\nBug: 63918065\nTest: test_timestamps.cpp\nChange-Id: I5d01eb844e4b14cd5477d56ea1dd9e309abc1c52\n"
    },
    {
      "commit": "39f02ddfbfd9313370d862a6c4727826379a319a",
      "tree": "aa5c61a50fff59d92db99619edd67b31e9d938c3",
      "parents": [
        "ee079fe295c41f89c2ac6316e99ee10847fb78fd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 04 09:13:31 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 14:59:25 2017 -0700"
      },
      "message": "aaudio: fix EXCLUSIVE mode interfering with SHARED\n\nThe MMAP endpoints were not tracked by the EndpointManager\nso it could not broker EXCLUSIVE access. To fix this the MMAP stream\nwas refactored to use a per-client stream and a per-device endpoint.\n\nCleanup close() of MMAP stream.\nAdd AAudioServiceEndpointShared.cpp.\nExtract AAudioServiceEndpointMMAP from AAudioServiceStreamMMAP.\nTrack MMAP endpoints so we can manage EXCLUSIVE and SHARED access.\n\nBug: 64494572\nBug: 64310586\nTest: see bug, use write_sine to play a shared stream and a excl stream\nChange-Id: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\nMerged-In: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\n"
    }
  ]
}
