)]}'
{
  "log": [
    {
      "commit": "eeff0cf82433a151b59e87d695b2189e7ff0858d",
      "tree": "71bf6388af3695abe528da4a89a0fbd061fc499b",
      "parents": [
        "bab4b47efbd4bdf7a816c704227a4aba1df4f3bb",
        "bc4845eddc182d4e6b21c6906917f8416034c9ca"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 17 22:02:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 17 22:02:31 2017 +0000"
      },
      "message": "Merge \"aaudio test: add test of improper handling of disconnect\""
    },
    {
      "commit": "bc4845eddc182d4e6b21c6906917f8416034c9ca",
      "tree": "36f8e34d3c85101a8be8eade8c0e922cd84b2977",
      "parents": [
        "7de1920b41a7c5a6aa466dcd4fffc936193328b1"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 12 15:51:30 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Oct 17 12:39:28 2017 -0700"
      },
      "message": "aaudio test: add test of improper handling of disconnect\n\nJust start a new stream without stopping or closing the old disconnected\nstream.\n\nBug: 67664976\nTest: this is a test\nChange-Id: I674626d0d365ed3a72e079212c6aceed9b0c85fc\n"
    },
    {
      "commit": "36967fb1a52f44cef9b5bdcca0f646aa136e285a",
      "tree": "8e3fd54b0c0cc9a55cd0f1c80f17698a0bca47b2",
      "parents": [
        "3d762515b88c266f6be7d8f05c83517960dbc92f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 12:43:41 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 17:19:33 2017 -0700"
      },
      "message": "Add missing includes.\n\nTest: mma\nBug: None\nChange-Id: I97b9e5e1b6e8b3126a8668460a8c99e4ef1a907d\n"
    },
    {
      "commit": "e474bc188186007964b532bd99311a933be22832",
      "tree": "a156185ffda69c4ede19526424982fe23125bd14",
      "parents": [
        "dddb4326c090fa8ea37168d861eb11cd3a66e0c9",
        "d0a23e619a6b5995612e4865749098b04ae591d1"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 23:01:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 15 23:01:32 2017 +0000"
      },
      "message": "aaudio: keep track of streams using strong pointers am: 523b3047af\nam: d0a23e619a\n\nChange-Id: I86bf56dd51fe0a59ebb920fbf49e1907818b6c30\n"
    },
    {
      "commit": "523b3047af443d0a51141ddabd328d52be5a23b0",
      "tree": "2596b9d310c3c59d391634d131d2ae866ddf1d47",
      "parents": [
        "1e0c671e14660588410560a55c34718bb8af3b22"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 13 13:03:08 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 13:29:26 2017 -0700"
      },
      "message": "aaudio: keep track of streams using strong pointers\n\nMaintain strong pointer to service stream during service calls.\nUse simple AAudioStreamTracker instead of complex HandleTracker.\n\nBug: 65280854\nTest: affects all MMAP streams, run all CTS tests, etcetera\nChange-Id: I3d2ed8b588ea39c216dacd4dea503b11c33f36f3\n"
    },
    {
      "commit": "5e44deb3fa65eb3dd7c354d5b794240f8e70a88d",
      "tree": "9ce6e537042bedc3570f0ace4ee2d7a4381c2cec",
      "parents": [
        "49e290da74f583bc9c7d14a733414200fe480580",
        "0b97f851d03999fdd19c13f2b0afa0a441ec3d5e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 14 04:15:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 14 04:15:04 2017 +0000"
      },
      "message": "Merge \"aaudio: cleaned up PlayerBase implementation\" into oc-mr1-dev am: a39b3ba3ad\nam: 0b97f851d0\n\nChange-Id: I3b56f7eb66c201371de9af495fad8bf3b8310300\n"
    },
    {
      "commit": "8a8a9e5d91c8cc110b9916982f4c5242efca33e3",
      "tree": "9ef74bc0ce163de8f38837b27df4410248087772",
      "parents": [
        "ee5201b4d9115cc7ac282155573e6354cc9c6819"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 12 16:25:15 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 13 14:41:46 2017 -0700"
      },
      "message": "aaudio: cleaned up PlayerBase implementation\n\nSimplify registration. Reduce use of virtual methods.\n\nThis CL, plus some CLs in AudioManager, should fix\ncrashes involving RefBase::decStrong\n\nBug: 65450109\nTest: CTS or \"write_sine_callback -m2 -pl\"\nChange-Id: Ie1decd20f8d44bdefb0faf92e6b74de4f72e86bd\n"
    },
    {
      "commit": "71ce897742a8cd0fbeb0bfc5b6580890e6faeb69",
      "tree": "170220b45b1e44a8ca2497e13bd2e8e5d217531f",
      "parents": [
        "90445b639c072f2b9c139e130d409158f6c41ba1",
        "50c9e990f5005e11df1eb050bbf09e7126128fef"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 11 22:44:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:44:32 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent noise upon disconnect\" into oc-mr1-dev am: aa488ac2ca\nam: 50c9e990f5\n\nChange-Id: I52f3a3764f2772061a3e4b72690a364d243ac247\n"
    },
    {
      "commit": "2d5ba532cc80b3408b9eb5d47d3144bf93ece8cd",
      "tree": "c5ec7c28e896560f742793162604ac9e3b4a518f",
      "parents": [
        "c75d97f20843388b9084561635996a01a53d0c0f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 14:36:11 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 11 12:20:56 2017 -0700"
      },
      "message": "aaudio: prevent noise upon disconnect\n\nAlso clean up the state machine handling in the data callback.\nPrevent error callback sometimes being called twice for the same error.\n\nBug: 63342351\nBug: 63087953\nTest: add sleep(2) to write_sine_callback.cpp before the requestStop()\nChange-Id: I27737bcb0371052741f50bda9f65c5994ccf6fd9\n"
    },
    {
      "commit": "c3efae1003caf9065e1e120672b44850cd36a0bd",
      "tree": "9f9a13beacb2f6f81d3147b1442dc8f09fbfe205",
      "parents": [
        "8ec8c3898a3fd4840f12ae48cabf7c22b2de3eae",
        "331aa6d5c9ba3cce65f22e1c12483320a694d4c3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 07:06:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 07:06:22 2017 +0000"
      },
      "message": "aaudio: fix return code from getTimestamp() am: c75d97f208\nam: 331aa6d5c9\n\nChange-Id: I8845b271acbee794c4e679d8ce485e5d89a9ce30\n"
    },
    {
      "commit": "8ec8c3898a3fd4840f12ae48cabf7c22b2de3eae",
      "tree": "87af358d56cb62a3cfd059bb85d983fa64c6bd73",
      "parents": [
        "ab2f3eb37bd517b7d0126791c0f8fb3e6f509916",
        "5badc8c1114c1d3a2934813297ab31f6e6ad5e3f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 04:18:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 04:18:10 2017 +0000"
      },
      "message": "Merge \"aaudio: fix problems with PlayerBase and ref counting\" into oc-mr1-dev am: e0de1cdc1e\nam: 5badc8c111\n\nChange-Id: I098386d047e5122febaf4da869dbd2345ba560a3\n"
    },
    {
      "commit": "c75d97f20843388b9084561635996a01a53d0c0f",
      "tree": "2830ecc2de864ef496f7bbbc507a5f144839732a",
      "parents": [
        "e0de1cdc1ebe4f43ac5ba4273d51b368901c87de"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 08 15:48:36 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 04:17:53 2017 +0000"
      },
      "message": "aaudio: fix return code from getTimestamp()\n\nShould be AAUDIO_ERROR_INVALID_STATE if no timestamp available.\n\nBug: 65447871\nTest: test_timestamps.cpp should only print AAUDIO_ERROR_INVALID_STATE\nChange-Id: Id9e211ef8fce078514f4348a434e0c003372369c\n"
    },
    {
      "commit": "965650e5c36f39cb5e6d780a22ff711fbf5a37f5",
      "tree": "95b4d26ce9b2f0590e59ddeeafd9d020db06b652",
      "parents": [
        "fbe5bd5d97cdeee6f4982a7db0db42311433aacd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 07 21:00:09 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 08 16:24:17 2017 -0700"
      },
      "message": "aaudio: fix problems with PlayerBase and ref counting\n\nCTS test was crashing because of a multiple inheritance\nproblem involving PlayerBase.\nWe now implement separate PlayerBase class that sits between\nAudioStream and the system.\n\nBug: 65450109\nTest: CTS nativemedia/aaudio\nChange-Id: I424663acc1eeacc9544769991495cb48f4110359\n"
    },
    {
      "commit": "b8ba103f7fd4a2695d20463689d898ddf5431dac",
      "tree": "e4025dced52bfff1c9bac23bdefd8fdcbebd84da",
      "parents": [
        "a7eba9bb298643b09b4d5f78ebea1c55e2365ad8",
        "3f1e4784c798418e0f2d75b77b5e458c863b6c20"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 07 16:24:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 16:24:52 2017 +0000"
      },
      "message": "Merge changes from topic \"aaudio_timestamps\" into oc-mr1-dev am: cc84034676\nam: 3f1e4784c7\n\nChange-Id: I189a652c143cab28d01353d6cf451878e36b9bfc\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": "7328a80ffc83729cc6252c79e0851a31af59c653",
      "tree": "62c8ae222700101931459a8ee921a4c016d34871",
      "parents": [
        "187dcd4eeaeace78665dafcee6acb074ef390545"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 30 09:29:48 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 17:08:19 2017 -0700"
      },
      "message": "aaudio: prevent retrograde motion in Legacy timestamps\n\nUse MonotonicCounter for timestamp position.\n\nBug: 63918065\nTest: write_sine_callback.cpp and test_timestamps.cpp\nChange-Id: Iea58384e2d96adcfad586e8c522024baaecccb8c\n"
    },
    {
      "commit": "187dcd4eeaeace78665dafcee6acb074ef390545",
      "tree": "01ed91d32634e648d06b059da4f9dda126620a44",
      "parents": [
        "cda5c070b3188a52771aa463507312ecf0180976"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Aug 29 09:04:35 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 16:42:34 2017 -0700"
      },
      "message": "aaudio example: print timestamps during callbacks.\n\nBug: 63918065\nTest: this is a test\nChange-Id: Id25dd36764761583986d3ce29f7d82032ec4539f\n"
    },
    {
      "commit": "cda5c070b3188a52771aa463507312ecf0180976",
      "tree": "f798fa438b8f4a98272d314375acf471c33b40c5",
      "parents": [
        "90153cae7ffd321338f90678a80abd62fb56e877"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 31 17:23:18 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 10:19:00 2017 -0700"
      },
      "message": "aaudio: test timestamps\n\nRun for a while, gathering timestamps\nthen print a report.\n\nBug: 63918065\nTest: this is a test\nChange-Id: Ie9ada2d22fc265247a4d6c9645e42cf94caa1c05\n"
    },
    {
      "commit": "f24d95960d85c891fc40db6f1e9644385efb4eb3",
      "tree": "79b1a8d807f48b5ae473db1058cdf4a1f48d3df6",
      "parents": [
        "59b54495e46af87450bea1b8e44e9a01dab04790",
        "d7c0f9f5bf83a2e45308b70643ba7785122b8c7f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 01 23:25:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 01 23:25:09 2017 +0000"
      },
      "message": "Merge \"aaudio examples: handle disconnect in write_sine_callback\" into oc-mr1-dev am: e185203e55\nam: d7c0f9f5bf\n\nChange-Id: I9a32952df8fa0dafa3d15c9c514b6e10f9e1eb44\n"
    },
    {
      "commit": "0b8529fbacaa35634ac24bb62c5890cddcb623b6",
      "tree": "f2ae5de5ae80bb6f69b929172804410e3335abf8",
      "parents": [
        "f238bd3c57632b7f4eeb6b1a6a9542058e911a5b",
        "8cf3a0788df2ee184b498086b1b8da322eeadcca"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 23:07:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 23:07:08 2017 +0000"
      },
      "message": "Merge \"Generate the IPlayer interface with AIDL.\""
    },
    {
      "commit": "7a61a3ae540748164068683cadacaea5ed225d68",
      "tree": "3bd852fe12b990b9dafa69409c87d94d0f410a01",
      "parents": [
        "3b224af571e8e70ef643a36e144e7427857d271d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 10 11:53:09 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 01 11:33:03 2017 -0700"
      },
      "message": "aaudio examples: handle disconnect in write_sine_callback\n\nAutomatically reopen the stream if we get disconnected.\nAdd a futex based signaling class so that the error callback can\nimmediately inform a waiting thread.\n\nThis can be used to prevent the system from playing an unpleasant sound\nafter the stream is disconnected.\n\nBug: 63342351\nTest: plug and unplug headphones while running write_sine_callback\nChange-Id: I3ea4fb24106156a29d2f302f3eb614f25f1b758a\n"
    },
    {
      "commit": "8cf3a0788df2ee184b498086b1b8da322eeadcca",
      "tree": "1bd36129bbd4afa491689deca23977dbf30930f6",
      "parents": [
        "a5ec8b0ec9c94fd9474fae1d1d1dc798ae6c4d2d"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:01:33 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 10:14:30 2017 -0700"
      },
      "message": "Generate the IPlayer interface with AIDL.\n\nThis removes the manually rolled IPlayer implementation and instead uses\nan aidl generated implementation. The IPlayer aidl file is moved from\nframeworks/base/.\n\nTest: run cts --module CtsMediaTestCases\nBug: 64223827\nChange-Id: Ia609f7ba1cc6f71ce919d6174dd8b5e0e1b05575\n"
    },
    {
      "commit": "9bdcfd9aa56bf3bfeec03baa053a684663cc799f",
      "tree": "9dea412d2e7fce055e9d978c6489e19d21f28500",
      "parents": [
        "2d6bb6e3c389282134052c6521eba73bae2071d1",
        "9bbb27dd63f825f7831355db4d5e87cd22d48f8e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Aug 29 21:02:45 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 29 21:02:45 2017 +0000"
      },
      "message": "aaudio examples:  Add deviceId option to examples am: e008d02aee\nam: 9bbb27dd63\n\nChange-Id: Ib299b433df5b3c7308bca290dabdbcc2f92a2008\n"
    },
    {
      "commit": "e008d02aee6667ecafb44bf84eeb1675cb07dfef",
      "tree": "680583a71a615612d96f67ded945cb7f77fcd96f",
      "parents": [
        "faf18c58baf4db501c9707a30fd811a4c9386a26"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 23 12:56:15 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Aug 29 09:55:56 2017 -0700"
      },
      "message": "aaudio examples:  Add deviceId option to examples\n\nNote that this uses the -d option, which used to be for durationSeconds.\nWe now use the -s option for seconds.\n\nBug: 64981153\nTest: this is a test\nChange-Id: I9789a1f520dc93bfb26143582dacb9619650abf7\n"
    },
    {
      "commit": "77964b915ca37c268fbb686a26da6b7417291e41",
      "tree": "e0b7e4decaa64ac21b654a150f88928a2851f3ff",
      "parents": [
        "032d22e18a59941c9a03802a126a9577ab5d193b",
        "12d8c65adac8af264b839e691d51892116771476"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 23:27:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 28 23:27:32 2017 +0000"
      },
      "message": "Merge \"aaudio: fix hang in client when audioserver dies\" into oc-mr1-dev am: 35fcdb6a65\nam: 12d8c65ada\n\nChange-Id: I75539ee38a415265e1eb181e62aba1aeaf49132b\n"
    },
    {
      "commit": "2bc7c1838703993e126bfe9a21fee053b6c0ab67",
      "tree": "1de62456a6e61f35ca0d3d63947dc5a8f064cbfc",
      "parents": [
        "7124c1985b535a7862cd8f2706386a2a0ba676b2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 11:45:01 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 12:55:54 2017 -0700"
      },
      "message": "aaudio: fix hang in client when audioserver dies\n\nFix timeout detection so that callback thread can die.\nPrevent AAudioBinderClient singleton from getting deleted,\nwhich caused a subsequent lock on a dead object to hang.\n\nBug: 64988439\nTest: \"write_sine -m2 -pl\" and \"adb shell killall audioserver\"\nChange-Id: I044bce385b66e69007d1997f051c9d6c042b7871\n"
    },
    {
      "commit": "963a7549ecaffad520b44d67889bacb8cd4bc34f",
      "tree": "79237488712cefece339a64a040345618dacf55a",
      "parents": [
        "e598e9986a7a7eff08d18c12138620de46c5c91c",
        "e9afda02db4ee9b6bc3a66eff31a6e7e71d31188"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 25 21:33:03 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 25 21:33:03 2017 +0000"
      },
      "message": "Merge \"aaudio: fix returned performanceMode for Legacy\" into oc-mr1-dev am: c35e23e508\nam: e9afda02db\n\nChange-Id: Ic6f0c8bc90726d9718deb74d727d06fc57805f3f\n"
    },
    {
      "commit": "09c27cab917f2f41dd58aececc3200b097fedde8",
      "tree": "9bd40d986cd0cc0cdb5d5b701abbb05013e56439",
      "parents": [
        "05e712d3be03291627eb40e9c7f6c08a9874bd23"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 22:12:56 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 25 11:06:58 2017 -0700"
      },
      "message": "aaudio: fix returned performanceMode for Legacy\n\nAAudio was setting the stream to PERFORMANCE_MODE_NONE\nif we got the FAST mixer but did not get the RAW flag.\nWe now consider FAST flag by itself to be LOW_LATENCY.\n\nBug: 63004643\nTest: see bug for repro case using NativeOboe app\nChange-Id: Id4643d20926a8e983cd28408f70e176976c02195\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"
    },
    {
      "commit": "15f7cab18eb12870545734588b12d873d0fe5d84",
      "tree": "9757be2cd5320b6d669a94bea59e744e3a766525",
      "parents": [
        "13e4dad5f0eafbe1c46fcbde6da9b37fcd57e422"
      ],
      "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 11:31:44 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\n"
    },
    {
      "commit": "703ddd9df5c664a4bc2aac4c848fd89dc3b26f1f",
      "tree": "20abaa73b545d1b760ea9784dd88ade1f7faef91",
      "parents": [
        "42aaf4437223bf51f0730c7a8c40698b30c65b9b",
        "e6cef0ec624e12874966fd1cfa2c0642b5a89d0b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 17 16:01:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 17 16:01:52 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent memory leak from double configure\" into oc-mr1-dev am: 8a37a466dc\nam: e6cef0ec62\n\nChange-Id: I60fbfb58f014f1addf3893b49d62d3a090276ace\n"
    },
    {
      "commit": "99306c80f061e4c11f05c21a19bfab6eac01c529",
      "tree": "4c9bceacfa5110d378351fe9cfd732b805808118",
      "parents": [
        "f4eb56ca4eb80124b344a8c6f56c4d1495014c31"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 14 12:38:58 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 16 09:57:49 2017 -0700"
      },
      "message": "aaudio: prevent memory leak from double configure\n\nPrevent AudioEndpoint from being configure()d twice.\nCheck return value of AudioEndpoint.configure().\nPrevent AudioStreamInternal from being open()ed twice.\n\nBug: 64522125\nTest: adb shell dumpsys media.audio_flinger --unreachable\nChange-Id: I3ae07af5610fd1f9e539f884923f781eefcd645f\n"
    },
    {
      "commit": "3e1842c3b2e4d2a60554a3522a90f0b8dca329f3",
      "tree": "9a9a4cd179fad99f593911a01d28e6cb7f2c178e",
      "parents": [
        "847f284bedfabd7971f470619bc3aa5728c45983",
        "c2cf01efdcbc5dfcb4ff221b6dfe674759445cbc"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 11 00:01:55 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 11 00:01:55 2017 +0000"
      },
      "message": "Merge \"aaudio: deleted FifoBuffers to fix memory leak\" into oc-mr1-dev am: 39ebbc5925\nam: c2cf01efdc\n\nChange-Id: I16b24119e17cb1e9a695df8d7f7920b56d05849e\n"
    },
    {
      "commit": "39ebbc59252e0d4450ff670d93093066bab15a88",
      "tree": "61cf51499699a0aed9a5a1ca2cace3302ec817c0",
      "parents": [
        "840f6990fb01d048ebae9036e9f0dbf12b76d4cb",
        "4a8d260f776a3c37908ff49d8baae12b3b1a1f46"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 10 23:50:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 10 23:50:49 2017 +0000"
      },
      "message": "Merge \"aaudio: deleted FifoBuffers to fix memory leak\" into oc-mr1-dev"
    },
    {
      "commit": "1389cc47fc04ae8715e9a5b6ed48cd2131b4ad21",
      "tree": "bf1ca351b317058f2389cec5efabcb6c48d9808f",
      "parents": [
        "d3643f0f75085115d365023237ed5fd8da24a8ef",
        "e1ca8625079c30c97b25135d6595a60b902070bc"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 10 03:41:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 03:41:02 2017 +0000"
      },
      "message": "Merge \"aaudio: fix ownership problems with file descriptors\" into oc-mr1-dev am: c9f2e060b0\nam: e1ca862507\n\nChange-Id: I0185a7c824c8e5e61adb5f4da17617721eac2ca7\n"
    },
    {
      "commit": "e32eb6dc4c087daa9b2467f97cccc0a53283ebcb",
      "tree": "94b787277ec84cffcb392c241155d6a8751763cf",
      "parents": [
        "2f1bc21fba397242af2510f6d31b4af73c44d1ef",
        "ff6900d8f991aac0b67b625f8a1d4d0461b4c50e"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Aug 10 00:34:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 10 00:34:08 2017 +0000"
      },
      "message": "Merge \"Generate IAudioRecord with AIDL.\""
    },
    {
      "commit": "4a8d260f776a3c37908ff49d8baae12b3b1a1f46",
      "tree": "9768f861b072e15589d560cdfe92796035bd737e",
      "parents": [
        "e88fd530455d39e4c770870c74c1198820f62bfe"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 09 16:53:35 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 09 17:12:01 2017 -0700"
      },
      "message": "aaudio: deleted FifoBuffers to fix memory leak\n\nBug: 64522125\nTest: adb shell dumpsys media.audio_flinger --unreachable\nChange-Id: I6045f951b4d793f31cac73e793258e168f74f3f2\n"
    },
    {
      "commit": "e72481c5c16d401c776e0ba49b84b80223769b91",
      "tree": "282c04aa82bba9f854b3125fa8edade0b41f5287",
      "parents": [
        "e88fd530455d39e4c770870c74c1198820f62bfe"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Aug 08 13:20:45 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 09 14:11:57 2017 -0700"
      },
      "message": "aaudio: fix ownership problems with file descriptors\n\nUse unique_fd to track file descriptors.\nFix extra close of file descriptor in SharedMemoryParcelable.cpp.\nThis bug was causing unrelated file descriptors to be closed!\n\nBug: 64311216\nTest: write_sine.cpp, FD should survive aaudio close\nChange-Id: I4f38c83510a49ea22b79b96d970ee48153417249\n"
    },
    {
      "commit": "ff6900d8f991aac0b67b625f8a1d4d0461b4c50e",
      "tree": "1c81319f27784e4d611f7895d519b7754f869c26",
      "parents": [
        "ce10f65fb5b48d81798caa2c2914b016082b5089"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Aug 01 15:47:38 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:15:59 2017 -0700"
      },
      "message": "Generate IAudioRecord with AIDL.\n\nUse AIDL to generate the IAudioRecord interface rather than using\na manually implemented interface.\n\nBug: 64223827\nTest: Ran the AudioNativeTest and CtsMediaTestCases CTS tests.\n\nChange-Id: Iade23c73253a97c358050bbd697ebe592b89a4c0\n"
    },
    {
      "commit": "d2d6f8414237f564f8c60c26d450276f95e616b9",
      "tree": "731ce09dd735c4bfe3adf2db0884dbb7befaebb6",
      "parents": [
        "932a77919784b16533588884b8044668813f2828",
        "f5095b3373511b88e3254b30c3bc3b99f2ea00f8"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Aug 08 19:43:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 19:43:10 2017 +0000"
      },
      "message": "Merge \"Fix double fd close in SharedMemoryParcelable.\" into oc-dr1-dev\nam: f5095b3373\n\nChange-Id: I5e27c40c343717c81361410890924a7240c3272b\n"
    },
    {
      "commit": "1d665bc481c88eef4de2b83caf35ed614b1e487d",
      "tree": "550780a66daaa60bf5739c7c59cc017ac96636e1",
      "parents": [
        "ddef08e7254cd593881711b9f812e062676b4b3d"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Mon Aug 07 19:19:42 2017 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Aug 08 10:03:00 2017 -0700"
      },
      "message": "Fix double fd close in SharedMemoryParcelable.\n\nBug: 64311216\n\nTest: Checked that close() does not return EBADF.\nChange-Id: Ia98c37d749dd3a6f22708657e8c7c346a9c0c5a4\n"
    },
    {
      "commit": "249617e843ed15988abaf9f0f30e613f0263eb69",
      "tree": "96797ce92a3a5ef22fa71daf2305ce2376abf9c9",
      "parents": [
        "4d519c7becf4891a7aafc3032097a088e72aeda3",
        "ea04d97050e778e7cefb755b442156310afada05"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 08 00:57:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 08 00:57:35 2017 +0000"
      },
      "message": "Merge \"aaudio: stop buzzing when MMAP stream disconnected\" into oc-mr1-dev"
    },
    {
      "commit": "d75cc634761653810e3b0d5aea951b5a59f47f83",
      "tree": "07adb23f89b270efdfadb01030b4904814bdcf88",
      "parents": [
        "c73d8f9b2a859fc0a7c805e0f283725ba25001d1",
        "e74240d0f0eb1a5becc3b182c997e18a7559d756"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 07 23:43:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 07 23:43:44 2017 +0000"
      },
      "message": "Merge \"aaudio: restore _get and _setSamplesPerFrame()\" into oc-mr1-dev"
    },
    {
      "commit": "ea04d97050e778e7cefb755b442156310afada05",
      "tree": "bb9a6566e18b07b6a14236713b9e4eb6253c14ba",
      "parents": [
        "fc32901189f8655d3d51064a0366ec9d8264940d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 07 12:30:44 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 07 14:34:55 2017 -0700"
      },
      "message": "aaudio: stop buzzing when MMAP stream disconnected\n\nWhen a stream is disconnected, clear the MMAP memory\nbuffer to prevent the hardware from looping on stale data\nand making a buzzing sound.\n\nBug: 63342351\nTest: play GStomper with AAudio through headphones and then unplug them\nChange-Id: I6372b0a031dea242e3830cc2d226a4c043d4467e\n"
    },
    {
      "commit": "e74240d0f0eb1a5becc3b182c997e18a7559d756",
      "tree": "2ef640b63bde1b43ff8e6a50132e93d4c2474560",
      "parents": [
        "fc32901189f8655d3d51064a0366ec9d8264940d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 15:25:43 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 07 14:03:58 2017 -0700"
      },
      "message": "aaudio: restore _get and _setSamplesPerFrame()\n\nThis restores some deprecated functions that some released apps\nwere calling. Restored:\n\n    AAudioStreamBuilder_setSamplesPerFrame()\n    AAudioStream_getSamplesPerFrame()\n\nBug: 64346279\nTest: put GStomper in AAudio mode using its Settings on Marlin\nChange-Id: I2749a06cded9fc3863d233713efda2674cf7f5e3\n"
    },
    {
      "commit": "a5222e298c294781067950a7cc319d3278fa845a",
      "tree": "69ea25d3c54785ed74af3aee94c5f760d3f13da0",
      "parents": [
        "909f4a6cada3d5fb7594da7d1809ba62d1b47340"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 28 13:31:14 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 10:07:39 2017 -0700"
      },
      "message": "aaudio: improve error logging\n\nReport when INVALID_STATE returned.\nThis was used to debug monkey test errors.\nCleanup some log messages.\nImprove \"dumpsys media.aaudio\"\n\nBug: 64310586\nTest: CTS nativemedia/aaudio\nChange-Id: Ifbcac4794cda22cccbacff6352243c0ef4589c53\n"
    },
    {
      "commit": "909f4a6cada3d5fb7594da7d1809ba62d1b47340",
      "tree": "5c7e4d185460f9147171569db32803e0d08b6ef3",
      "parents": [
        "d4f732fef1773050b6d73c47e112138f46f28e25",
        "efa5600935ca69d87b0f8fb2fb9be7304f0f326e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 03:39:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 03 03:39:54 2017 +0000"
      },
      "message": "Merge \"aaudio: legacy reports EXCLUSIVE when not\" into oc-mr1-dev"
    },
    {
      "commit": "0befec600314a79c0d142c3edd99f7d1c75e1afe",
      "tree": "9aae908902a8dc73d8d9853ee8af49bca2d974de",
      "parents": [
        "dde8d48a32a625297f69c6316c7832f7ec0221fe"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 28 15:12:13 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 00:44:16 2017 +0000"
      },
      "message": "aaudio: update state for legacy mode\n\nAdd logging to the loopback test.\nUpdate state in the callback.\nImplement AAudioStreamRecord::getFramesWritten().\n\nBug: 62781173\nBug: 64214193\nTest: aaudio_loopback.cpp, look for STARTED state while running\nChange-Id: Iba867d048dcfcafe6db1d095abe2766f1aabe608\n"
    },
    {
      "commit": "efa5600935ca69d87b0f8fb2fb9be7304f0f326e",
      "tree": "52e6baa2f1cbe4b4e2f4406e998083bbedf375e3",
      "parents": [
        "eb1c0658e405e5b7e26f4b16761c5b1ce3f77d46"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 02 15:07:21 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 02 15:13:38 2017 -0700"
      },
      "message": "aaudio: legacy reports EXCLUSIVE when not\n\nLegacy streams could return EXCLUSIVE from getSharingMode()\nif requested by caller.  But that is not supported.\nTo avoid misleading developers, we force it to SHARED mode.\n\nBug: 63355841\nTest: setprop aaudio.mmap_exclusive_policy 2 \u0026\u0026 write_sine -x -pn\nChange-Id: I91c82b63293752c6aa2c4933cd2bfe8c6d41a5d3\n"
    },
    {
      "commit": "97350f9df7252c881f011a410fcd9e6d766d2bee",
      "tree": "fab6334a25607e03276648611584b8fc23b40463",
      "parents": [
        "eb1c0658e405e5b7e26f4b16761c5b1ce3f77d46"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 21 15:59:44 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 02 10:57:31 2017 -0700"
      },
      "message": "aaudio: improve accuracy of timestamps\n\nAccount for latency added by the AAudio service.\nFix input timestamps.\n\nBug: 37080396\nTest: test_timestamps.cpp input_monitor.cpp\nChange-Id: I1053cd21af722bb9b9371df4e5731bf4a0a57b0b\n"
    },
    {
      "commit": "19d05412dbba726830c6d4064bca798f682cd3bc",
      "tree": "c398775354f6f68e4bcaad565c720aafc7d6c9ea",
      "parents": [
        "5fafb7bdbca55fe955df1a913051c5d08a0ba087",
        "faeb8b20e8ce98d308ca5ec095eeba6583cd9ec6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 31 13:58:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 31 13:58:06 2017 +0000"
      },
      "message": "aaudio: fix getXRunCount\nam: faeb8b20e8\n\nChange-Id: I5df65477820b7297479f4cf1f41ec1d5c92cff77\n"
    },
    {
      "commit": "faeb8b20e8ce98d308ca5ec095eeba6583cd9ec6",
      "tree": "ca5897bcd530e9f0e5167d30ed7945171d0a11c9",
      "parents": [
        "d478859f02323b03e2927a10055c42331f6dacc7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 25 15:15:07 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 28 13:19:29 2017 -0700"
      },
      "message": "aaudio: fix getXRunCount\n\nMixer was not advancing FIFO when underflowed so the client could not\ndetect the xrun.\nAlso underruns could cause the stream to drift in time relative to other\nstreams.\n\nBug: 64033855\nTest: trigger underruns by sleeping in a callback\nChange-Id: Ia038f5048ffbff3b82e9d86e6807483dfe6879d0\n"
    },
    {
      "commit": "5fafb7bdbca55fe955df1a913051c5d08a0ba087",
      "tree": "8782978078bed9d8579a3369efc2d16f3d6820ae",
      "parents": [
        "fd12ac32f9bc97b9944c0b9b242589b4c7fd694c",
        "d478859f02323b03e2927a10055c42331f6dacc7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 28 18:17:47 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 28 18:17:47 2017 +0000"
      },
      "message": "Merge \"aaudio: add glitch detection to loopback, improve latency check\" into oc-dr1-dev\nam: d478859f02\n\nChange-Id: Ic2e44eebd2ef8110321799b01597714b0c0a12e8\n"
    },
    {
      "commit": "fcf9efd59e36759ee7df66fdfce4f8eedeb376e4",
      "tree": "d8b518341024972e1c7b4464950b79089cb49cd0",
      "parents": [
        "e6e9a4811dc43e5c393b2c45eca64d1f1608e8d0"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 14 08:25:08 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 27 17:17:07 2017 -0700"
      },
      "message": "aaudio: add glitch detection to loopback, improve latency check\n\nAlso improve automatic loop gain control for latency testing.\nUse ArgParser to parse command line options.\n\nBug: 38178592\nTest: this is a test\nChange-Id: Idfe8f25544a3e7c74ee15be008bf34e3a0741455\n"
    },
    {
      "commit": "ec15950cd75e0558fca50ee1e057744c9bdf7755",
      "tree": "ec0bb3fea9b7d5184057db9091c29c75fba5a60f",
      "parents": [
        "5c2bdf6a7042d68f9ae2d2f58cf3bae1c44fcab9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 25 17:33:47 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 25 17:33:47 2017 -0700"
      },
      "message": "aaudio: remove AAUDIO_ from clock ids for autodocs\n\nUse CLOCK_MONOTONIC instead of AAUDIO_CLOCK_MONOTONIC\n\nBug: 63915257\nTest: Look at the generated autodocs.\nChange-Id: I856da9ba4139833bcaef6873e87a3ef58e6ace69\n"
    },
    {
      "commit": "f17f49051945a3d289a47ef6572b31c687adcebf",
      "tree": "626b5cfb2c630c1726f9c7037f17f09c4689c152",
      "parents": [
        "2eddd660f9140d50f4e49e7981580dee2356ff54",
        "d937a5cf8533cc571ef2ac03d543bc15aacffdcf"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 21 03:36:13 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 21 03:36:13 2017 +0000"
      },
      "message": "Merge \"aaudio: reduce glitching by improving sleep timing\" into oc-dr1-dev\nam: d937a5cf85\n\nChange-Id: Ic8e3f97c88ec2197a6d66a48eb091d8eea166891\n"
    },
    {
      "commit": "fd34a9310659aa53e9e10d6826651577a75f6447",
      "tree": "dc284d0eb17cbd8a023a2aec52d854c809b02c38",
      "parents": [
        "679b6f6eaaeba35fcf96cb04a784308211d4b319"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 19 07:03:52 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 20 16:10:41 2017 -0700"
      },
      "message": "aaudio: reduce glitching by improving sleep timing\n\nALways sleep a minimum time to avoid busy wait in real-time thread.\nAccount for wakeup jitter in threads on the other side of a FIFO.\nAvoid race condition that caused a longer sleep than necessary.\nFix calculation of mFreeRunning for capture mode.\n\nAlso added systrace logging, which was used to debug this.\n\nBug: 63814792\nTest: Run GStomper on Walleye with MMAP on, see bug\nChange-Id: I7b20098580ff454365425bd21e43c17ade532a0a\n"
    },
    {
      "commit": "67a69ea56423af97a91cac876d10a447cdc21254",
      "tree": "e063a92b3d559d5affd8af255cc7dc6b3d46e052",
      "parents": [
        "e3dd4f59c8383bdec909e87860ede1c7c12407d2",
        "2dd56c9e2c9874471d3c9ec7d2bbfdaccbd554d4"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 23:00:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 23:00:50 2017 +0000"
      },
      "message": "Merge \"aaudio: fix intermittent hang and position error\" into oc-dr1-dev am: c1fe2634dc\nam: 2dd56c9e2c\n\nChange-Id: I2324f99835d005d46cc2838888c3cc65e66730a1\n"
    },
    {
      "commit": "2dd56c9e2c9874471d3c9ec7d2bbfdaccbd554d4",
      "tree": "6432b4bd2f70fa04e6be7c02477ac9162923fe68",
      "parents": [
        "d36be4e4d85a2671de4f410b5ed1a6d1314ab553",
        "c1fe2634dc228640119849692cd1defb88bc2209"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 22:22:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 22:22:19 2017 +0000"
      },
      "message": "Merge \"aaudio: fix intermittent hang and position error\" into oc-dr1-dev\nam: c1fe2634dc\n\nChange-Id: I44d29f0bc88935ccba6b365fec242568d35f6079\n"
    },
    {
      "commit": "c1fe2634dc228640119849692cd1defb88bc2209",
      "tree": "453a26bb059c59f8216f0883768706ea43620c14",
      "parents": [
        "29204646b945adf58390b7d06f2cb223d6b2c4c0",
        "940083c3049e269f6c150d5477eccb6bad32b129"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 22:15:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 18 22:15:39 2017 +0000"
      },
      "message": "Merge \"aaudio: fix intermittent hang and position error\" into oc-dr1-dev"
    },
    {
      "commit": "32cb394f830758d7703dc1f615e4d2de18c7af1b",
      "tree": "ad51a33972d77084a02392e8f63261a573469b27",
      "parents": [
        "24f8801b22a68204e5ac8187963f07098e9da34a",
        "ef28fdb8d849f1bda5799080b898e429bc29259c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 13:57:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 13:57:16 2017 +0000"
      },
      "message": "Merge \"audio:  reduce logspam from MMAP mode\" into oc-dr1-dev am: 4dbbda2d8c\nam: ef28fdb8d8\n\nChange-Id: I611b95222c81d279e75071e0bd369b4e5ad4bd78\n"
    },
    {
      "commit": "ef28fdb8d849f1bda5799080b898e429bc29259c",
      "tree": "41a43d7f1fdcc8043bc3fc7ad8f56de62f7ebb08",
      "parents": [
        "03e1cd73c64654d096243325ac3e6dc3f0b6e2fe",
        "4dbbda2d8c84eabc0cd7c7ee032c2280258f4ffb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 13:53:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 13:53:16 2017 +0000"
      },
      "message": "Merge \"audio:  reduce logspam from MMAP mode\" into oc-dr1-dev\nam: 4dbbda2d8c\n\nChange-Id: I05dc5fc8eed6e3623f01b87df205d009f04cc3f8\n"
    },
    {
      "commit": "4dbbda2d8c84eabc0cd7c7ee032c2280258f4ffb",
      "tree": "25332d68058c967fcd1686bd9032459b7ab4a8c4",
      "parents": [
        "d8365c54d049aade9e02ccae722f311f846cad9a",
        "c7abac4329e15cda4bbbd25f8fc4a93b70d70d0a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 13:47:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 18 13:47:40 2017 +0000"
      },
      "message": "Merge \"audio:  reduce logspam from MMAP mode\" into oc-dr1-dev"
    },
    {
      "commit": "940083c3049e269f6c150d5477eccb6bad32b129",
      "tree": "ae4c20530003d7c9086d343a3b3e7d1d5b17562e",
      "parents": [
        "af842eb79ed9943b7a4495136197e093fc7d8ba7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 17:00:02 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 17:00:02 2017 -0700"
      },
      "message": "aaudio: fix intermittent hang and position error\n\nFix hang caused by recursive mutex.\nFix disconnect caused by getPosition() failing, which was\njust because the stream wasn\u0027t ready yet.\n\nBug: 63775537\nBug: 63709749\nTest: run \"aaudio_loopback -pl -Pl -c2 -n6 -te -m\" many times\nChange-Id: Ic1d54360b55cfc8ecc1809584c262bc0976c58bb\n"
    },
    {
      "commit": "fa97a325f95e6cbefe54819674466fda9fc0ad10",
      "tree": "7dfbbc222707c3cb56a6b93bf0b567108054980d",
      "parents": [
        "7e5292c9262f4183b534be945bd76d7c342f20aa",
        "9584601561ad1d3b4fc1b0035c3f3e5bbd3e499e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 17 20:01:51 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 17 20:01:51 2017 +0000"
      },
      "message": "Merge \"Append additional owners to projects\""
    },
    {
      "commit": "7e5292c9262f4183b534be945bd76d7c342f20aa",
      "tree": "81bdaa936696c6a357493902db0cfea6592b9a6e",
      "parents": [
        "bf03f3e203fa11ffaa23c971c6788dedc2eea427",
        "1198d860283bfc31b39c587580463eef9fcc6720"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jul 17 19:12:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 17 19:12:06 2017 +0000"
      },
      "message": "Merge \"Add parameters validation on AAudio MMap server\" into oc-dr1-dev am: 30bf42ca72\nam: 1198d86028\n\nChange-Id: I129cded669966e6e1adb3b79e3b76b4299d64bba\n"
    },
    {
      "commit": "1198d860283bfc31b39c587580463eef9fcc6720",
      "tree": "57944797a7387aabdc39243df69a909fe0c2f561",
      "parents": [
        "ef63d8b63e6cc81aaad77e46364d6360a0df5855",
        "30bf42ca7242f5f7849cbe7ce61fc994b88c5b56"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jul 17 19:09:34 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 17 19:09:34 2017 +0000"
      },
      "message": "Merge \"Add parameters validation on AAudio MMap server\" into oc-dr1-dev\nam: 30bf42ca72\n\nChange-Id: I6e200b18f9d1c7a02b702a41715ef061b5cafdd8\n"
    },
    {
      "commit": "30bf42ca7242f5f7849cbe7ce61fc994b88c5b56",
      "tree": "f1212996c4a23eee3d8671813b1a57d1613c4c64",
      "parents": [
        "32ab0585ffe4c84fa9b873ab2a51ed977d70b02f",
        "901f65deb49786f4dffd39ac965c0bb681392c0b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 17 19:04:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 17 19:04:45 2017 +0000"
      },
      "message": "Merge \"Add parameters validation on AAudio MMap server\" into oc-dr1-dev"
    },
    {
      "commit": "c7abac4329e15cda4bbbd25f8fc4a93b70d70d0a",
      "tree": "f2402076af44c039478a9bfec1017903a702aa40",
      "parents": [
        "af842eb79ed9943b7a4495136197e093fc7d8ba7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 11:13:37 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 11:13:37 2017 -0700"
      },
      "message": "audio:  reduce logspam from MMAP mode\n\nBug: 63760826\nTest: run CTS nativemedia/aaudio and notice less logging\nChange-Id: I04564963f85577a53f40f1bad064f5e79723ac76\n"
    },
    {
      "commit": "9584601561ad1d3b4fc1b0035c3f3e5bbd3e499e",
      "tree": "0f3268ed27ec2f843c79924a4b779afa06fc2b98",
      "parents": [
        "6c3359f522fa5c528d7eef5deaaf0d2c9c365089"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 17 10:34:02 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 17 10:56:37 2017 -0700"
      },
      "message": "Append additional owners to projects\n\nThis releaves reviewing burden from the frameworks/av owners.\nNote that the lists of owners are inherited from the parent\ndirectories thus the people listed in these files are owners\n*in addition* to people listed in frameworks/av/OWNERS,\nand frameworks/av/{media|services}/OWNERS.\n\nChange-Id: I5e2db1c40cb807b906b2701fe446c874a8d19983\nTest: not needed\n"
    },
    {
      "commit": "901f65deb49786f4dffd39ac965c0bb681392c0b",
      "tree": "c80ff068d9aae5d4292387883b24b6be6b2f8ad7",
      "parents": [
        "6ac42ebf890ce99b401e1962db8ceecfb38b7a65"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 12 17:56:35 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 14 13:42:46 2017 -0700"
      },
      "message": "Add parameters validation on AAudio MMap server\n\nBug: 63384314\nTest: adb shell /system/bin/write_sine -m -pl -n4 \\\n\u0026\u0026 adb shell /system/bin/write_sine -pl -n4 \\\n\u0026\u0026 adb shell /system/bin/write_sine_callback -m -pl -n4 \\\n\u0026\u0026 adb shell /system/bin/write_sine_callback -pl -n4 \\\n\u0026\u0026 adb shell /system/bin/CtsNativeMediaAAudioTestCases32\n\nChange-Id: I462f956e8fc25eb583699af6389e0f299243eafb\n"
    },
    {
      "commit": "96f7b1bcc71945aea42eb23718b632144707927e",
      "tree": "f85b801d74baa1adc346c9ab2f86dd4dbb0fdbe2",
      "parents": [
        "36cc22b90543e5a11fe7eb202a81d563d970dbc8",
        "bc1ab2ffbbc1e185da19f92e5549f6024771e3d8"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jul 13 22:54:59 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 13 22:54:59 2017 +0000"
      },
      "message": "remove extraneous `using namespace android` and deprecate utils/Log.h am: 357552eb72 am: 8d0dd68b05\nam: bc1ab2ffbb\n\nChange-Id: Ic7a31ca72688507648b404c4ad0c51e091420d91\n"
    },
    {
      "commit": "bc1ab2ffbbc1e185da19f92e5549f6024771e3d8",
      "tree": "8188c53fba5bf53640eccc4f14684117f9fe1ead",
      "parents": [
        "556a5a06e8fab58cdf3f449c5f9de64daffae763",
        "8d0dd68b05a7a82d684ad78a0d33c8b9ddfc526f"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jul 13 22:51:59 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 13 22:51:59 2017 +0000"
      },
      "message": "remove extraneous `using namespace android` and deprecate utils/Log.h am: 357552eb72\nam: 8d0dd68b05\n\nChange-Id: I49931f5a7becf28517e3801f6089fb720746a2ee\n"
    },
    {
      "commit": "357552eb724722dc620c56d2151bdfad07467952",
      "tree": "54dae79fff516a8d0d9e95a303a6c3680e3bf0df",
      "parents": [
        "37cd5f116dfbde69be3625e7a2112346393b0ef1"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Jul 12 13:48:26 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jul 13 22:39:27 2017 +0000"
      },
      "message": "remove extraneous `using namespace android` and deprecate utils/Log.h\n\nThis namespace is not used by this file and its declaration is removed\nin a separate CL from utils/Log.h, which is the only place it is\ndefined, so we must remove this extraneous line.\n\nAlso, since that separate CL is deprecating utils/Log.h in favor of\nlog/log.h, we make the switch to the new header.\n\nTest: Build\nExempt-From-Owner-Approval: Owners file needs updating\nChange-Id: I34aa80765d30c79f8cb67eaf95a9995066bd672e\n"
    },
    {
      "commit": "f7d9b3fb2901410ec6267174d5819d09fa3c6521",
      "tree": "625d1af0f979c8ec5915410e9f48df4d14a969e8",
      "parents": [
        "b25d3927c08503e68a213526a8f82d40eacde81b",
        "556a5a06e8fab58cdf3f449c5f9de64daffae763"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 13 18:55:20 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 13 18:55:20 2017 +0000"
      },
      "message": "Merge \"aaudio loopback: improve latency tester\" into oc-dr1-dev am: ac31fb8978\nam: 556a5a06e8\n\nChange-Id: I17b6898cfdd4106305f2e4edfe6501de8560ef2c\n"
    },
    {
      "commit": "ac31fb897846c6e8c72ade7fa5e4ab3c00bf77c9",
      "tree": "3d6c3fd673e97e24502a2fb57cbb4e0d88ae3b46",
      "parents": [
        "437f48e64adb5d4180b621c6c1f5f2a200b81f82",
        "4ea2d60c6baa3f3a6751165cbb45e66ff6968aa0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 13 18:34:38 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 13 18:34:38 2017 +0000"
      },
      "message": "Merge \"aaudio loopback: improve latency tester\" into oc-dr1-dev"
    },
    {
      "commit": "cb4dae216758d9e9a28050f65097f1ce905c03e9",
      "tree": "4c3c49679384d70006675e9e06c7e8e8117e206c",
      "parents": [
        "0acb3209107802e2ab116f8374aab886579729bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 12 12:17:33 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nMerged-In: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "4ea2d60c6baa3f3a6751165cbb45e66ff6968aa0",
      "tree": "ba56ffa54034ded9b39f50d35ead7aa1e668933e",
      "parents": [
        "0acb3209107802e2ab116f8374aab886579729bb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jun 20 08:52:24 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 12 09:39:39 2017 -0700"
      },
      "message": "aaudio loopback: improve latency tester\n\nAdd command line options.\nAdd magnitude measurement.\nAdd automated latency analyzer that uses round trip echo and an impulse correlation.\nUses Harmonic Product Spectrum technique but in the time domain.\n\nBug: 33398120\nBug: 38178592\nTest: this is a test\nChange-Id: Ied6c09e6d8d373a188c13ed85b27de6c4b7be2f4\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "44795237e0f43d6efe16ef1cb047ce7ea0cbb870",
      "tree": "b75e4b9c388ab734632de3cdf5d0edf96c2172c5",
      "parents": [
        "41779c4849d0edfd72c784fdbd4de92784056ee7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 30 16:27:38 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 12 01:24:19 2017 +0000"
      },
      "message": "aaudio: command line argument parser\n\nGeneric parser that is used in multiple examples.\n\nAdded -n{numberOfBursts} for buffer size.\n\nThis is being used to test the MMAP features.\n\nBug: 63002656\nTest: this is a test\nChange-Id: Idf7560f9bb3ed7834f6c4686dd6009f27f04220e\nMerged-In: Idf7560f9bb3ed7834f6c4686dd6009f27f04220e\n"
    },
    {
      "commit": "a54f1283fdd9adbd64ecca4e14af56aaa0e8c825",
      "tree": "cdadd19276119f775480482778c2df15a6ae264f",
      "parents": [
        "20e6916035865710b7a30ac7f2eac1311e2c2e70"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 11 18:21:40 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "753c9f326b9505004576996091a64a43271634a0",
      "tree": "fc1c7801f04dffe67ba6836aa7ace1f40cfeac1f",
      "parents": [
        "ab8e5c6bd83648c6dc4ada7fd197e960df82cc1e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 30 16:27:38 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 10 14:36:02 2017 -0700"
      },
      "message": "aaudio: command line argument parser\n\nGeneric parser that is used in multiple examples.\n\nAdded -n{numberOfBursts} for buffer size.\n\nThis is being used to test the MMAP features.\n\nBug: 63002656\nTest: this is a test\nChange-Id: Idf7560f9bb3ed7834f6c4686dd6009f27f04220e\n"
    },
    {
      "commit": "163088da1f0e79580a7bea1b00f0c9acfaee1f62",
      "tree": "0925edbd2ad3d89ea17890f242b20964a8134127",
      "parents": [
        "a5c50b9e7fb8148bdc4411efa52bac1ce8a6c853",
        "2681203d83dbfe33e947c54f672ccf364c7c3d60"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 07 21:33:45 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 07 21:33:45 2017 +0000"
      },
      "message": "Merge \"aaudio test: test both input and output stream limits\" into oc-dr1-dev am: bea2c338a3\nam: 2681203d83\n\nChange-Id: I174abefa27c67624513576b60614fd650775bd1b\n"
    },
    {
      "commit": "bea2c338a30f71003c45f2f713d887f980d31f3d",
      "tree": "2320bca41b78be3eb248279111c5345e4d459f20",
      "parents": [
        "c06dd405a61b24116ac08415709e5575b2583492",
        "e34b0cfc0d7cf5118df6922f37452266ef4078b5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 07 21:24:42 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 07 21:24:42 2017 +0000"
      },
      "message": "Merge \"aaudio test: test both input and output stream limits\" into oc-dr1-dev"
    },
    {
      "commit": "c25cb7709303bc9f88902185374728df3571a966",
      "tree": "b1b5205d6bbc15e7b0bae32ffe71c08807724313",
      "parents": [
        "723310ac8d40edc70fee934b28d8c1ece3b67222",
        "983bd9792caa00f00aff246c21f236974409c9ba"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 06 04:18:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 06 04:18:35 2017 +0000"
      },
      "message": "Merge \"aaudio: MMAP input not implement pause flush\" into oc-dr1-dev am: 014a56b57a\nam: 983bd9792c\n\nChange-Id: Id42d514e3ea583ea340e828288052a85fac8381f\n"
    },
    {
      "commit": "b336e89d57d51b80b8bf5f0a0caf7667209ffb1d",
      "tree": "58772fbc45cad4cea3c51e080c18e95981ec8c90",
      "parents": [
        "27e9c662948b1edc5219f2faba1a72fb00fd791a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 15:35:43 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 06 01:38:49 2017 +0000"
      },
      "message": "aaudio: MMAP input not implement pause flush\n\nThey should return AAUDIO_ERROR_UNIMPLEMENTED\njust like the legacy streams.\n\nBug: 63351465\nTest: CTS test_aaudio.cpp testPauseAndFlushNotSupported\nChange-Id: I42c8d45517bf0d808e648287579b9fb0c0cb3ae0\n"
    },
    {
      "commit": "04169afbaeafca6cf3bba5ee2b0f5bd3654188e9",
      "tree": "79684d632f333f3946d345deca43ef017940ea74",
      "parents": [
        "87c9ee8b15ff58bc5449c0d92333fc9f451ac48e",
        "7cb561922049c89bd059ae97a884b30a03330342"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 23:52:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 05 23:52:44 2017 +0000"
      },
      "message": "Merge \"aaudio:  only use MMAP for low latency perf mode\" into oc-dr1-dev am: 27e9c66294\nam: 7cb5619220\n\nChange-Id: Idfdd35ec698e0f24865b4e8d0fa8083394f495fe\n"
    },
    {
      "commit": "27e9c662948b1edc5219f2faba1a72fb00fd791a",
      "tree": "33ce20becd82198f8616d48b21a48bfad42a54a2",
      "parents": [
        "a5247769a8afdf03f440fcbe7c71110d46301e6b",
        "ede7c963ceb253f213754a3512fad58eec5c4aea"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 05 23:04:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 05 23:04:33 2017 +0000"
      },
      "message": "Merge \"aaudio:  only use MMAP for low latency perf mode\" into oc-dr1-dev"
    },
    {
      "commit": "87c9ee8b15ff58bc5449c0d92333fc9f451ac48e",
      "tree": "b8257f4ead37dab20b3c483e9918b5201c68a7e6",
      "parents": [
        "39e88a617aa8e291bc21fcc73a30c10f8fcbb5c5",
        "bfa6c20fb457aac28e02fe0ff79d44e5224d946d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 22:26:07 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 05 22:26:07 2017 +0000"
      },
      "message": "aaudio: return channelCount in legacy stream am: a5247769a8\nam: bfa6c20fb4\n\nChange-Id: I863862980f48f5f208b41448833b8144e9c7aa49\n"
    },
    {
      "commit": "ede7c963ceb253f213754a3512fad58eec5c4aea",
      "tree": "8b1d7a8aad6b5360dc0a51dc23a8465dc656a9d3",
      "parents": [
        "d51329eca85112973867a6bf0d210e82d6d1c411"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 13:54:32 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 13:54:32 2017 -0700"
      },
      "message": "aaudio:  only use MMAP for low latency perf mode\n\nThis is a quick workaround that just disables MMAP mode unless\nperformance mode is LOW_LATENCY.\n\nBug: 63176221\nTest: use write_sine and change performance mode\nChange-Id: Ic17ad45366d51d86fb4801c84ada4f6f82b5ff98\n"
    },
    {
      "commit": "a5247769a8afdf03f440fcbe7c71110d46301e6b",
      "tree": "cb73026e84bd354b6eb2f49c1b132f856f6a199d",
      "parents": [
        "d51329eca85112973867a6bf0d210e82d6d1c411"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 12:57:58 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 12:57:58 2017 -0700"
      },
      "message": "aaudio: return channelCount in legacy stream\n\nBug: 63336407\nTest: Use input_monitor.cpp and set requested channel count to zero\nChange-Id: Ibe7688bb94e0142ee0779c74ddec62c9552efb79\n"
    },
    {
      "commit": "e34b0cfc0d7cf5118df6922f37452266ef4078b5",
      "tree": "a58523a61699b1d49c4dc51e0c0aae4534f0e69f",
      "parents": [
        "8dd045aaf7079fce7c3f0d8457d4e4c7055bac03"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 04 17:24:39 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 04 17:24:39 2017 -0700"
      },
      "message": "aaudio test: test both input and output stream limits\n\nBug: 62951298\nTest: this is a test\nChange-Id: I03521e2a6147733c7b89f2371cc3f46ca5001d77\n"
    },
    {
      "commit": "38217e0d53b14e634243d1ce36fa5d3267c71056",
      "tree": "3ddf472b051c944a6c1039b2acac9ac1c01fafb9",
      "parents": [
        "ee05ff049fb5c6f394f806e58c3f2ec28e8957af",
        "b66815f31c762eef2d1b84fa6f5d9f9b158ca18c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 02 02:32:49 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Jul 02 02:32:49 2017 +0000"
      },
      "message": "aaudio: enable exclusive MMAP mode support am: d51329eca8\nam: b66815f31c\n\nChange-Id: I02e0c91d5ce2dc0ceb7b47aa27c6c63a69e90a3a\n"
    },
    {
      "commit": "d51329eca85112973867a6bf0d210e82d6d1c411",
      "tree": "f29ad645223b5ea22b709f4d3362f27aa14d6a9a",
      "parents": [
        "4501b3510f9b2af2ff63a0471de24e3feea1d0a8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 30 16:06:16 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 02 00:32:10 2017 +0000"
      },
      "message": "aaudio: enable exclusive MMAP mode support\n\nAllow exclusive MMAP mode only if the HAL indicates\nthat the FD returned for shared memory buffer can be shared\nwith any application.\n\nNOTE: the way the HAL indicates this is temporary until the audio\nHAL is modified in next HIDL release.\n\nBug: 37167970\nTest: check playback and capture in mmap exclusive and shared mode\nChange-Id: I09c1461b2f99532ded2ef9d36d483b82096fda68\n"
    },
    {
      "commit": "ee05ff049fb5c6f394f806e58c3f2ec28e8957af",
      "tree": "225a7f2b71be6bf853e721d9983a858aa51e7ef6",
      "parents": [
        "79ab080b8942004b814f01c59c144fe232ba1618",
        "c2080abab02fa8ccb7e94591a26a06f619f73bea"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jul 01 23:56:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 01 23:56:41 2017 +0000"
      },
      "message": "aaudio: improved dumpsys am: 4501b3510f\nam: c2080abab0\n\nChange-Id: Ia64a1040bca886c8bcd25ce4e7ac7c1703680798\n"
    },
    {
      "commit": "4501b3510f9b2af2ff63a0471de24e3feea1d0a8",
      "tree": "486de512a65eaad91323fd521823b7230088643d",
      "parents": [
        "8dd045aaf7079fce7c3f0d8457d4e4c7055bac03"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 29 18:12:36 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 14:28:57 2017 -0700"
      },
      "message": "aaudio: improved dumpsys\n\nAdd more information about various streams and endpoints.\n\nBug: 38396780\nTest: adb shell dumpsys media.aaudio\nChange-Id: I5cc116574bfc3aa93703c182d933dbdfcbefad7a\n"
    },
    {
      "commit": "79ab080b8942004b814f01c59c144fe232ba1618",
      "tree": "8f31e8d92a9bd5812befdb1ccd0b2a98acda9808",
      "parents": [
        "881df07acf401752dae3c8ad6307c4276aeb0b6c",
        "4e862f65057744afe776617f5b3aac16c093b94e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jul 01 19:59:29 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 01 19:59:29 2017 +0000"
      },
      "message": "Merge \"aaudio: limit number of streams per process\" into oc-dr1-dev am: 8dd045aaf7\nam: 4e862f6505\n\nChange-Id: I9c86fd02bb6167a70c35dcbccebb7907679b5b86\n"
    },
    {
      "commit": "9169294539ad46e08e2fe76a93c37ed965c13058",
      "tree": "7f99790dd7625f12d19a1365666e4c541451f0ae",
      "parents": [
        "6ec18f8ce3d797fdd5722926ac17c1f4eda7904d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 30 12:23:05 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jul 01 08:01:51 2017 -0700"
      },
      "message": "aaudio: limit number of streams per process\n\nTesting the new max streams restriction revealed the bug\ninvolving the second shared stream.\n\nBug: 62951298\nBug: 63171495\nTest: test_n_streams.cpp can open MAX_STREAMS_PER_PROCESS MMAP streams\nChange-Id: Ibea7d9c4716326a37c669954b52f397ed2968caa\n"
    },
    {
      "commit": "cd6d380e4f526476a11adface7680b3981c6a7d7",
      "tree": "1f7b5128348d63e775519a52e5fe0133cddbc4e4",
      "parents": [
        "06909d621d3755180693ea2539c6883fa2c6d727",
        "7668940938c2caea8dd80399000b819f147bc2cc"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 30 06:59:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 30 06:59:06 2017 +0000"
      },
      "message": "Merge \"aaudio: close MMAP stream if client dies\" into oc-dr1-dev am: e27d3a435c\nam: 7668940938\n\nChange-Id: I447b8dcd864ed9517e4ca61bc341eee2a24c2707\n"
    },
    {
      "commit": "11e8d335b1da528ee771b19b63df23ae6fd52f41",
      "tree": "b5679b54a7acfbdf455c95355da8c0b9a4dbc51c",
      "parents": [
        "1fa57e8d3149703e794997edffa4e03bfb0a6887"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 24 09:59:02 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 29 21:40:21 2017 -0700"
      },
      "message": "aaudio: close MMAP stream if client dies\n\nNotify client when audio service dies. Clear connection.\nNotify AAudio service when client dies. Close client streams.\n\nUse sp\u003c\u003e to track ServiceStreams.\n\nBug: 38267698\nTest: test_no_close.cpp\nChange-Id: I5f1699ed3b8b7bd960947c0028a89ca8419ce7a0\n"
    },
    {
      "commit": "139de794544d60cc57c373e49129151f6e445c23",
      "tree": "9ae53d34461a934a4fa67bd583f6fa36cc33502c",
      "parents": [
        "0a95eef5a334aab0e79c646e5dc099c76e55c3e4",
        "ea0a0fb6d9b8fb7d084399b58d5ac838b87b6057"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 30 00:28:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 30 00:28:15 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent apps from affecting a stream they do not own\" into oc-dr1-dev am: 1fa57e8d31\nam: ea0a0fb6d9\n\nChange-Id: Ibd60e8fb62affab0305afd62610b6f5668c72222\n"
    }
  ],
  "next": "2ac035fdc577a843d07f385dbe3c4e2229d886dc"
}
